Python 手写代码面试题, 编写 Python 程序,计算文件中单词的出现频率
Python 手写代码面试题, 编写 Python 程序,计算文件中单词的出现频率
QA
Step 1
Q:: 如何编写一个 Python 程序来计算文件中单词的出现频率?
A:: 可以通过读取文件内容,然后使用字典来统计每个单词出现的次数。下面是一个示例代码:
from collections import Counter
# 读取文件内容
with open('file.txt', 'r') as file:
text = file.read().lower()
# 将文本分割为单词列表
words = text.split()
# 使用 Counter 统计每个单词的出现频率
word_count = Counter(words)
# 输出单词频率
for word, count in word_count.items():
print(f'{word}: {count}')
此代码将文本中的每个单词计数并输出每个单词的出现频率。
Step 2
Q:: 如何处理大小写敏感和标点符号的情况?
A:: 在处理单词频率时,通常会忽略大小写,并且需要去除标点符号。可以在读取文本后,使用 str.lower()
将所有文本转为小写,并使用 re
模块去除标点符号。示例如下:
import re
from collections import Counter
# 读取文件内容
with open('file.txt', 'r') as file:
text = file.read().lower()
# 去除标点符号
text = re.sub(r'\W+', ' ', text)
# 将文本分割为单词列表
words = text.split()
# 使用 Counter 统计每个单词的出现频率
word_count = Counter(words)
# 输出单词频率
for word, count in word_count.items():
print(f'{word}: {count}')
Step 3
Q:: 如何处理大型文件的单词频率计算?
A:: 对于大型文件,可以使用分块读取的方法,以避免内存不足的情况。可以将文件分块读取,并对每个块进行单词频率统计,最后将所有块的统计结果合并。示例如下:
from collections import Counter
# 分块读取文件
def process_chunk(file, chunk_size=1024):
while True:
chunk = file.read(chunk_size)
if not chunk:
break
yield chunk
# 统计单词频率
word_count = Counter()
with open('large_file.txt', 'r') as file:
for chunk in process_chunk(file):
words = chunk.lower().split()
word_count.update(words)
# 输出单词频率
for word, count in word_count.items():
print(f'{word}: {count}')
用途
面试这个内容的原因是单词频率统计是文本处理和自然语言处理中的基础任务之一。它考察了候选人对文件操作、字符串处理、正则表达式以及 Python 内置模块的掌握情况。在实际生产环境中,这项技能常用于日志分析、搜索引擎索引、文档相似度计算、关键词提取等场景。\n相关问题
🦆
如何优化文件读取和处理性能?▷
🦆
如何将结果存储到数据库或文件中?▷
🦆
如何处理不同语言或编码的文件?▷
🦆
如何使用 Python 的并行处理库如 multiprocessing 或 threading加速计算?▷