为了账号安全,请及时绑定邮箱和手机立即绑定

Python 遍历打开的文件

Python 遍历打开的文件

智慧大石 2023-04-25 16:19:36
我正在尝试计算“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 次。有没有更有效的方法来做我正在做的事情?谢谢
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

由于lines是一个列表,lines.count(word)因此返回正好等于 的行数word。这是0出于两个原因:

  1. 全部返回的字符串以readlines()换行符结尾(可能最后一行除外)。由于word不以换行符结尾,因此它永远不会完全匹配它们中的任何一个。

  2. 即使您删除了换行符,您也是在将单个单词与整行进行比较。因此,除非文件每行包含一个单词,单词后有一个空格,否则 的元素lines永远不会完全匹配word

另一方面,由于line是单个字符串,因此计算该匹配项line.count(word)的子字符串数。该循环将文件所有行中的子字符串数相加。linewordfor

请注意,如果您确实有一行只包含"the ",您的代码将对该单词计数两次。没必要做

times = lines.count(word)

在循环之前。你应该只初始化times = 0.

您还可以使用以下sum()功能:

times = sum(line.count(word) for line in lines)


查看完整回答
反对 回复 2023-04-25
?
HUH函数

TA贡献1836条经验 获得超4个赞

这是一个非常简单的方法来读取整个文件并计算出现次数:


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}.")


查看完整回答
反对 回复 2023-04-25
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信