如何修改Python代码统计文本文件的单词、空格及换行符频次
解决方法:统计空格和换行符的字符频次
当然可以搞定这个问题!你当前代码里的line.split()是“罪魁祸首”——这个方法会把空格、换行这类空白字符当成分隔符直接跳过,所以它们根本没机会进入统计流程。我们只需要调整遍历逻辑,直接处理文件里的每一个字符,就能把空格(' ')和换行符(\n)都纳入统计了。
修改后的完整代码
下面是优化后的代码,同时保留了你原本提取单词的需求,并且用更安全的文件处理方式:
word_list = [] frequency = {} # 使用with语句自动管理文件生命周期,避免忘记关闭文件 with open(file_name, 'r') as file: for line in file: # 遍历当前行的每一个字符(包括空格、换行符) for char in line: # 用字典get方法简洁更新计数,不存在的字符默认计数0 frequency[char] = frequency.get(char, 0) + 1 # 保留原逻辑:提取单词到列表 word_list.extend(line.split()) # 打印结果示例 print("提取的单词列表:") print(word_list) print("\n字符频次统计(含空格、换行):") for char, count in sorted(frequency.items()): # 对换行符做特殊显示,方便查看 display_char = '\\n' if char == '\n' else char print(f"'{display_char}': {count}")
关键改动说明
- 去掉
split()的字符过滤:直接遍历line的每个字符,这样空格、换行符都会被处理到 - 安全的文件处理:用
with语句打开文件,不用手动调用close(),避免资源泄漏 - 更简洁的计数逻辑:用
dict.get(key, default)方法替代繁琐的if-else判断,一行完成计数更新 - 优化结果显示:把换行符显示为
\n,避免输出时直接换行影响可读性
如果不需要保留提取单词的逻辑,只需要统计字符的话,删掉word_list相关代码即可。
内容的提问来源于stack exchange,提问作者David Dennis




