Python 批量统计 docx 文件关键词词频并导出到 Excel
要利用 Python 批量统计文件夹下 docx 文件中的特定关键词词频,并将输出结果导出到 Excel,可以按照以下步骤进行操作:
- 导入必要的模块
import os
import re
import docx
import openpyxl
- 定义函数来读取 docx 文件并计算词频
def count_words(filename, keywords):
# 读取 docx 文件
doc = docx.Document(filename)
# 初始化计数器
word_counts = {keyword: 0 for keyword in keywords}
# 遍历每个段落
for para in doc.paragraphs:
# 遍历每个关键词
for keyword in keywords:
# 统计关键词出现的次数
word_counts[keyword] += len(re.findall(keyword, para.text))
return word_counts
- 遍历文件夹中的所有 docx 文件,并调用函数来计算词频
# 定义文件夹路径和关键词列表
folder_path = 'path/to/folder'
keywords = ['keyword1', 'keyword2', 'keyword3']
# 初始化结果列表
results = []
# 遍历文件夹中的所有 docx 文件
for filename in os.listdir(folder_path):
if filename.endswith('.docx'):
file_path = os.path.join(folder_path, filename)
# 调用函数计算词频
word_counts = count_words(file_path, keywords)
# 将结果添加到列表中
results.append({'filename': filename, **word_counts})
- 将结果导出到 Excel 文件中
# 创建 Excel 文件
workbook = openpyxl.Workbook()
worksheet = workbook.active
# 将表头写入 Excel 文件
headers = ['filename'] + keywords
for col, header in enumerate(headers, start=1):
worksheet.cell(row=1, column=col, value=header)
# 将结果写入 Excel 文件
for row, result in enumerate(results, start=2):
for col, header in enumerate(headers, start=1):
worksheet.cell(row=row, column=col, value=result.get(header))
# 保存 Excel 文件
workbook.save('output.xlsx')
完整代码如下:
import os
import re
import docx
import openpyxl
def count_words(filename, keywords):
# 读取 docx 文件
doc = docx.Document(filename)
# 初始化计数器
word_counts = {keyword: 0 for keyword in keywords}
# 遍历每个段落
for para in doc.paragraphs:
# 遍历每个关键词
for keyword in keywords:
# 统计关键词出现的次数
word_counts[keyword] += len(re.findall(keyword, para.text))
return word_counts
folder_path = 'path/to/folder'
keywords = ['keyword1', 'keyword2', 'keyword3']
results = []
for filename in os.listdir(folder_path):
if filename.endswith('.docx'):
file_path = os.path.join(folder_path, filename)
word_counts = count_words(file_path, keywords)
results.append({'filename': filename, **word_counts})
workbook = openpyxl.Workbook()
worksheet = workbook.active
headers = ['filename'] + keywords
for col, header in enumerate(headers, start=1):
worksheet.cell(row=1, column=col, value=header)
for row, result in enumerate(results, start=2):
for col, header in enumerate(headers, start=1):
worksheet.cell(row=row, column=col, value=result.get(header))
workbook.save('output.xlsx')
原文地址: http://www.cveoy.top/t/topic/mLHc 著作权归作者所有。请勿转载和采集!