我是python的新手。我有一个每行有一个随机单词的文档。这个文件中有数千个单词。我试图只打印四个字母长的单词。我试过这个:
f=open("filename.txt")
Words=f.readlines()
for line in f:
if len(line)==4:
print(line)
f.close()
但是当我这样做时,python是空白的。我假设我也需要剥离空格,但是当我做的时候
f.strip()
我收到一条错误消息,指出.strip()不适用于列表项。任何帮助都很感激。谢谢!
答案 0 :(得分:3)
'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
,如上例所示。
答案 1 :(得分:0)
你应该这样做:
for line in Words:
而不是
for line in f:
答案 2 :(得分:-1)
您想要line.strip()
,因为f是文件对象,而不是字符串。