我在使用next()
和strip()
檢索我正在閱讀的行後面的行時遇到問題。測試數據看起來是這樣的:使用python next()和strip()檢索以下行
@abcde:111/2
ABCDEFGHIj
+abcde:111/2
bla11
@abcde:115/2
JDIJSKNDIJ
+abcde:115/2
bla13
@abcde:113/2
djijwkoken
+abcde:113/2
bla15
我的目標是要刪除的4條線全部套以「@」包含在第二行「N」。預期測試輸出應該是這樣的:
@abcde:111/2
ABCDEFGHIj
+abcde:111/2
bla11
@abcde:113/2
djijwkoken
+abcde:113/2
bla15
這裏是我的代碼(delete_N.py),我跑它遠程Ubuntu服務器上使用Mac OS的終端,與Python 2.7:
import sys
filename1 = sys.argv[1] #file to process
data = open(filename1, 'r')
def del_N(input1):
for line in input1:
if line[:1] == '@' and 'N' not in next(input1).strip():
print line.strip()
for i in range(3):
print next(input1).strip()
del_N(data)
但我得到以下錯誤:
Traceback (most recent call last):
File "delete_N.py", line 14, in <module>
del_N(data)
File "delete_N.py", line 12, in del_N
print next(input1).strip()
StopIteration
我在做什麼錯?
我通常使用,你使用''pass' continue'。無論循環的其他部分如何,「continue」都可以工作。在這種情況下,循環的其餘部分是'else:'case,所以'pass'起作用。無論如何,我同意這是要走的方式,而不是使用'next()'。 – steveha
@steveha好點,'繼續'在這裏的確在風格上更好。將解決。 – senshin
@steveha爲什麼'continue'比'pass'或'next()'好?我的意思是,在什麼情況下循環不起作用? – biohazard