LWZ*_*LWZ 2 python file-io for-loop python-3.x
我正在阅读一个大文本文件,我需要从特定行读取一个数字.该文件如下所示:
....
unknown number of lines
....
ABCD
some random stuff
a number I want to read
....
....
Run Code Online (Sandbox Code Playgroud)
我想从"签名"行之后的2行读取数字ABCD,这是唯一的.现在我正在做的是:
with open(filename,'r') as f:
for line in f:
if line.rstrip('\n') == 'ABCD':
continue
Run Code Online (Sandbox Code Playgroud)
但是continue只能通过1次迭代推进for循环.那么,我怎样才能使它再推进一次迭代以获得我真正需要的线?
你可以显式调用next在f*(该for循环通常不会给你),推进迭代,然后调用continue:
for line in f:
if line.rstrip('\n') == 'ABCD':
next(f)
continue
print(line)
Run Code Online (Sandbox Code Playgroud)
现在将打印:
....
unknown number of lines
....
a number I want to read
....
....
Run Code Online (Sandbox Code Playgroud)
从而跳过'ABCD'和'some random stuff'.
在您确定一般情况下ABCD是不是最后的元素,这应该不会造成问题.但是,如果你想保持安全,可以将它包装在一个try - except以捕获StopIteration异常.
*在这种情况下,这是有效的,因为f它是自己的iteratorie iter(f) is f.一般情况下,情况并非如此,对于列表,迭代器是它自己的独特对象,list_iterator因此像这样推进它是行不通的.