如何从txt文件到python搜索单词

如何从txt文件到python搜索单词,python,Python,如何在文本文件中显示长度为20的单词 为了演示如何列出所有单词,我知道我可以使用以下代码: #Program for searching words is in 20 words length in words.txt file def main(): file = open("words.txt","r") lines = file.readlines() file.close() for line in lines: print (line)

如何在文本文件中显示长度为20的单词

为了演示如何列出所有单词,我知道我可以使用以下代码:

#Program for searching words is in 20 words length in words.txt file
def main():
    file = open("words.txt","r")
    lines = file.readlines()
    file.close()
    for line in lines:
        print (line)
    return

main()
但我不知道如何聚焦和显示所有20个字母的单词


非常感谢

如果您的行中有几行文本,而不是每行只有一个单词,您首先必须将它们拆分,这将返回一个单词列表:

words = line.split(' ')
然后,您可以迭代该列表中的每个单词,并检查其长度是否为20

for word in words:
    if len(word) == 20:
        # Do what you want to do here
如果每行只有一个单词,您可以直接在
行上操作
,并跳过for循环。您可能需要去掉行尾字符,
word=line.strip('\n')
。如果您只想收集所有数据,可以执行以下操作:

words_longer_than_20 = []    
for word in words:
        if len(word) > 20:
            words_longer_than_20.append(word)

如果您的文件每行只有一个单词,并且您只需要包含20个字母的单词,您可以简单地使用:

     with open("words.txt", "r") as f:
         words = f.read().splitlines()
         found = [x for x in words if len(x) == 20]
然后,您可以打印列表或单独打印每个单词

您可以尝试以下方法:

f = open('file.txt')
new_file = f.read().splitlines()

words = [i for i in f if len(i) == 20]

f.close()

在我的例子中,一行中有一个单词次要细节,OP只要求长度为20的单词:)应该是长度等于20而不是大于20的单词。使用
split()
而不指定分隔符,以删除并按任何类型的空格(包括换行符或制表符)拆分。这将消除对
strip()
的需要。因为f.readlines()读取新行字符并作为字母计数。您可能也应该关闭该文件。实际上,任何使用read()、readlines()或splitlines()方法打开的python文件都没有属性close(),并将为您提供AttributeError。但是,如果刚才打开的文件是这样读取的:f=open(filename),那么f.close()是一个有效的操作。这不是真的。打开文件后,需要将其关闭。否则,python的某些实现将保持文件打开,直到程序存在。这是一种不好的做法。打开文件进行写入或追加时,必须在完成后关闭该文件。但是,当使用readlines()、read()或splitlines()时,python将抛出一个属性错误。该属性错误是因为您试图访问
splitlines()
的结果,这是一个
列表。您没有保存对该文件的引用,因此无法关闭它,但您应该关闭它!请阅读python文档(或任何其他编程书籍)。