用ChatGPT写了一个指定的词频统计的代码,对当前目录下data文件夹中所有的txt文档进行统计,txt文档名的格式是“01_2023-01-01.txt”,并将结果保存在Excel中。
# 修改一下`count_keywords`函数,使其返回一个字典,其中键为文件名,值为一个包含指定词语出现频率的列表。
# 然后在`save_to_excel`函数中将文件名拆分成两个部分,分别写入excel的第一列和第二列。具体代码如下:
import os
import xlwt
# 指定词语列表
keywords = ['词语1', '词语2', '词语3']
# 统计每个文件中指定词语的出现频率
def count_keywords(filename):
with open(filename, 'r', encoding='utf-8') as f:
content = f.read()
count_list = [content.count(keyword) for keyword in keywords]
# print(count_list)
return {os.path.basename(filename): count_list}
# 遍历目录下的所有txt文件
def traverse_files(dir):
file_list = []
for root, dirs, files in os.walk(dir):
for file in files:
if file.endswith('.txt'):
file_list.append(os.path.join(root, file))
return file_list
# 将统计结果保存到excel
def save_to_excel(file_list, data):
wb = xlwt.Workbook()
ws = wb.add_sheet('Sheet1')
ws.write(0, 0, '代号')
ws.write(0, 1, '日期')
for i, keyword in enumerate(keywords):
ws.write(0, i+2, keyword)
for i, file in enumerate(file_list):
filename, date = os.path.splitext(os.path.basename(file))[0].split('_')
ws.write(i+1, 0, filename)
ws.write(i+1, 1, date)
for j, count in enumerate(data[i][os.path.basename(file)]):
ws.write(i+1, j+2, count)
wb.save('result.xls')
if __name__ == '__main__':
dir = './data' #./data为txt文档所在的文件夹
file_list = traverse_files(dir)
data = [count_keywords(file) for file in file_list]
# print(file_list)
save_to_excel(file_list, data)
# `count_keywords`函数返回一个字典,其中键为文件名(不包含路径和后缀), 值为一个包含指定词语出现频率的列表。
# `save_to_excel`函数将文件名拆分成两个部分,分别写入excel的第一列和第二列。
# 注意,这里假设文件名的格式是“01_2023-01-01.txt”, 文件名中的“01”为第一列,日期“2023-01-01”为第二列。