我是python的新手。我有一个文档,每行有一个随机单词。这个文件里有几千个字。我试着只打印四个字母长的单词。我试过这个:
f=open("filename.txt")
Words=f.readlines()
for line in f:
if len(line)==4:
print(line)
f.close()
但当我这样做的时候,python是空白的。我想我也需要去掉空白,但当我做时
f.strip()
我收到一个错误,指出.strip()不适用于列表项。任何帮助都是感激的。谢谢
"Python为空",因为您试图第二次迭代该文件。
第一次是使用readlines()
,所以当迭代完成时,您处于文件的末尾。然后,当您执行for line in f
时,您已经处于文件的末尾,因此没有剩余的内容可以迭代。要解决此问题,请放弃对readlines()
的调用。
为了做你想做的事,我会这样做:
with open('filename.txt') as f:
for line in f: # No need for `readlines()`
word = line.strip() # Strip the line, not the file object.
if len(word) == 4:
print(word)
您的另一个错误发生在f.strip()
中,因为f
是一个文件对象,但您只将strip
作为字符串。因此,只需在每次迭代中拆分line
,如上面的示例所示。
您应该做:
for line in Words:
而不是
for line in f:
您需要line.strip()
,因为f是一个文件对象,而不是字符串。