我有一个文件~/practice/search_from
,看起来像这样:
From i
ssdfadfksjaflkf
asdfasf
adf
sd
fd
fs
sgdggggggggggggsd
gsg
sdg
From j
dasdfewf
sdfas
adsf
我想打印以From开头的行。
所以我在python提示符下做了以下操作:
>>> fhandle=open('practice/search_from')
>>> for line in fhandle:
... if not line.startswith('From '):
... continue
... else:
... print(line.rstrip())
...
From i
From j
此代码似乎可以正常工作。
但是,当我放进去
>>> fhandle=open('practice/search_from')
>>> for line in fhandle:
... line = line.rstrip()
... if not line.startswith('From:') :
... continue
... print(line)
...
或
>>> fhandle=open('practice/search_from')
>>> for line in fhandle:
... line = line.rstrip()
... if not line.startswith('From:') :
... continue
... else:
... print(line)
什么都不会打印出来。为什么会这样呢?有没有办法解决最后两个代码?
非常感谢您。
答案 0 :(得分:1)
什么都不会打印出来,因为文件中没有任何行以From:
开头。
line.startswith('From:')
才是True
。因此,not line.startswith('From:')
在您的文件中将始终为True
(没有任何行以From:
开头),并且您将始终评估continue
行,该行跳至下一个迭代for
循环。
答案 1 :(得分:1)
您的代码很好,除非您使用From:
搜索。
从您的代码中删除colon(:)
,它将正常运行:
In [2296]: fhandle=open('practice/search_from')
In [2297]: for line in fhandle:
...: line = line.rstrip()
...: if not line.startswith('From'):
...: continue
...: print(line)
...:
From i
From j