如何在文件中打印具有一定长度的行(Python)

时间:2014-04-12 18:24:54

标签: python file

我是python的新手。我有一个每行有一个随机单词的文档。这个文件中有数千个单词。我试图只打印四个字母长的单词。我试过这个:

f=open("filename.txt")
Words=f.readlines()
for line in f:
    if len(line)==4:
        print(line)
f.close()

但是当我这样做时,python是空白的。我假设我也需要剥离空格,但是当我做的时候

f.strip()

我收到一条错误消息,指出.strip()不适用于列表项。任何帮助都很感激。谢谢!

3 个答案:

答案 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是文件对象,而不是字符串。