Python计算txt文件平均词长:如何统计所有行的单词总数?
解决统计文件所有行单词数并计算平均词长的问题
原代码的核心问题是words变量每次循环都会被当前行的单词列表覆盖,导致最后只能获取最后一行的单词数。要统计所有行的单词总数,需要新增一个累计变量,同时调整代码逻辑的位置:
修改后的代码
# 使用with语句自动管理文件资源,避免手动关闭 with open("apple.txt", "r") as file: total_letters = 0 total_words = 0 # 新增累计总单词数的变量 for line in file: words = line.split() total_words += len(words) # 每次循环累加当前行的单词数 for word in words: # 直接用isalpha()判断是否为字母,替代ord的数值判断,更简洁 for letter in word: if letter.isalpha(): total_letters += 1 # 循环结束后再计算平均词长,确保用的是全局的总字母数和总单词数 average_word_length = total_letters / total_words print(f"总单词数:{total_words}") print(f"平均词长:{average_word_length}")
关键修改点
- 新增
total_words变量,初始值为0,每次遍历一行时,将当前行的单词数(len(words))累加到该变量中,最终得到整个文件的单词总数。 - 将平均词长的计算和结果输出代码移到循环外部,确保使用的是全局累计的
total_letters和total_words,而不是最后一行的局部变量。 - 用
with open(...)语法处理文件,自动完成文件关闭操作,避免资源泄漏。 - 用
str.isalpha()方法替代原代码中通过ord()判断字母范围的逻辑,代码更简洁易读。
测试结果
针对你的apple.txt内容:
I ate apples. How many apples did you eat.
运行修改后的代码会输出:
总单词数:8 平均词长:3.5
(计算说明:总字母数为28,总单词数8,28/8=3.5)
内容的提问来源于stack exchange,提问作者user20232221
相关产品推荐
相关产品推荐

