跟着github上找的代码写一个做词频分析的程序,由于源代码是用Python2写的,copy到Python3遇到了不兼容问题。
简化后的代码如下:
from collections import OrderedDict
import csv
import codecs
#读取已分好词的文本文档
path='E:/Programe/PySeg/2004.txt'
with open(path,'r',encoding='utf-8') as f:
text=f.read()
#对读取的文档做词频统计
count_dict=dict()
for item in text.split('/'):
if item in count_dict:
count_dict[item]+=1
else:
count_dict[item]=1
#根据词汇出现的频率进行排序
d_sorted=OrderedDict(sorted(count_dict.items(),key=lambda x:x[1]))
#将统计好的词频信息写入csv文档
with open('E:/Programe/PySeg/2004_tj.csv','wb') as f:
f.write(codecs.BOM_UTF8)
w=csv.writer(f)
w.writerows(d_sorted.items())
运行后报错:
网上查是Python2与Python3不兼容引起的,将最后一部分代码的以二进制形式’wb’写入改为写入’w’,并去掉f.write()这句话:
#将统计好的词频信息写入csv文档
with open('E:/Programe/PySeg/2004_tj.csv','w') as f:
#f.write(codecs.BOM_UTF8)
w=csv.writer(f)
w.writerows(d_sorted.items())
又有了新的错误:
这个错误之前遇到过,在open()函数里做如下更改:
#将统计好的词频信息写入csv文档
with open('E:/Programe/PySeg/2004_tj.csv','w',encoding='utf-8-sig') as f:
#f.write(codecs.BOM_UTF8)
w=csv.writer(f)
w.writerows(d_sorted.items())
运行不再报错,但生成的excel文件有空行,如图:
先暂时在excel中手动批量删除。