Python 遍历打开的文件

我正在尝试计算“The”一词在文本中出现的次数(大致)。


book1 = 'imitation_of_christ.txt'

book2 = 'jesus_of_history.txt'


with open(book1, encoding='utf-8') as book1:

    lines = book1.readlines()

    word = 'the '

    times = lines.count(word)


    for line in lines:

        times += line.count(word)



    print (f"The word '{word}'' appears roughly {times} times in {book1}.")

我已经编写了代码,但我不明白为什么我需要“时间”变量来完成这项工作?我试图删除它,但它说了 0 次。


有没有更有效的方法来做我正在做的事情?


谢谢


智慧大石
浏览 107回答 2
2回答

呼啦一阵风

由于lines是一个列表,lines.count(word)因此返回正好等于 的行数word。这是0出于两个原因:全部返回的字符串以readlines()换行符结尾(可能最后一行除外)。由于word不以换行符结尾,因此它永远不会完全匹配它们中的任何一个。即使您删除了换行符,您也是在将单个单词与整行进行比较。因此,除非文件每行包含一个单词,单词后有一个空格,否则 的元素lines永远不会完全匹配word。另一方面,由于line是单个字符串,因此计算该匹配项line.count(word)的子字符串数。该循环将文件所有行中的子字符串数相加。linewordfor请注意,如果您确实有一行只包含"the ",您的代码将对该单词计数两次。没必要做times = lines.count(word)在循环之前。你应该只初始化times = 0.您还可以使用以下sum()功能:times = sum(line.count(word) for line in lines)

HUH函数

这是一个非常简单的方法来读取整个文件并计算出现次数:book1 = 'imitation_of_christ.txt'book2 = 'jesus_of_history.txt'with open(book1, encoding='utf-8') as book1:    book = book1.read()    word = 'the '    times = book.count(word)    print (f"The word '{word}'' appears roughly {times} times in {book1}.")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python