目录
一、需求分析
二、相关库列表
三、代码在此
四、一些问题
一、需求分析
把txt文件里的英语单词按照出现次数排序并生成csv文件,如果次数相同按照单词的md5值来排序
二、相关库列表
- pandas
- re
- collections
- hashlib
三、代码在此
- 打开文件
txt_file = open(file_path, 'r')
- 读取文件内容
txt_data = txt_file.read()
- 字母全小写
txt_lower = txt_data.lower()
- 正则表达式去特殊符号
# 正则表达式去除特殊符号punc = '~`!#$%^&*()_+-=|\';":/.,?><~·!@#¥%……&*()——+-=“:’;、。,?》《{}\n'# 调用正则表达txt_query = re.sub(r"[%s]+" % punc, "", txt_lower)
- 调用统计库对词频统计
# 使用空格来对字符串进行裁切 txt_list = txt_query.split(' ') # 调用统计库来对词频进行统计 word = Counter(txt_list)
- 把每个单词的信息写入到一个列表
# 创建一个列表来接收DataFrame原型 pa_list = [] # 把键、值和根据键名生成的md5写入原型里 for key, value in word.items():pa_list.append([key, value, hashlib.md5(key.encode('utf-8')).hexdigest()])
- 调用pandas完成排序和文件导出
# 生成DataFramepd_data = pd.DataFrame(pa_list)# 根据值和md5进行排序dataexclex = pd_data.sort_values([1, 2])# 把文件导出dataexclex.to_csv(f'./{new_file_name}.csv')
- 完整代码
import pandas as pd import re from collections import Counter import hashlibdef Word_frequency_statistics(file_path,new_file_name):# 打开文件txt_file = open(file_path, 'r')# 读取文件内容txt_data = txt_file.read()# 字母小写化txt_lower = txt_data.lower()# 正则表达式去除特殊符号punc = '~`!#$%^&*()_+-=|\';":/.,?><~·!@#¥%……&*()——+-=“:’;、。,?》《{}\n'# 调用正则表达txt_query = re.sub(r"[%s]+" % punc, "", txt_lower)# 使用空格来对字符串进行裁切txt_list = txt_query.split(' ')# 调用统计库来对词频进行统计word = Counter(txt_list)# 创建一个列表来接收DataFrame原型pa_list = []# 把键、值和根据键名生成的md5写入原型里for key, value in word.items():pa_list.append([key, value, hashlib.md5(key.encode('utf-8')).hexdigest()])# 生成DataFramepd_data = pd.DataFrame(pa_list)# 根据值和md5进行排序dataexclex = pd_data.sort_values([1, 2])# 把文件导出dataexclex.to_csv(f'./{new_file_name}.csv')# 要词频统计的文件路径 file_path = '' # 导出时的文件名称 new_file_name = '' # 调用函数统计词频 Word_frequency_statistics(file_path,new_file_name)
四、一些问题
我只试过wav文件,mp3文件一个也可以,前提是文件夹里的文件全是要参与的文件,安装库的时候遇到问题简易回退一个大版本0.9.0=>0.8.0实际体验没多大区别。