首先附上可以正常输出中文的完整代码。汉字乱码输出的解决方法是pd.read_csv函数要多携带一个参数encoding='gbk',指明编码方式。
import pandas as pd
import os
import jieba.analyse
pinglun = " " # 全部评论内容组合
__all__ = []
for filename in os.listdir(os.path.dirname(__file__)):#遍历全部文件
if filename.endswith("csv"):#选出csv
# print(filename) 此处输出的是文件名
file = pd.read_csv(filename, encoding='gbk')#打开csv文件,并指明编码方式为gbk
for index, row in file.iterrows():
x = row['content']#content为一列的列名
pinglun = pinglun + str(x)
print(pinglun) # 所有评论拼在一起
keywords = jieba.analyse.extract_tags(pinglun, topK=5, withWeight=False, allowPOS=())
for keywords, weight in jieba.analyse.extract_tags(pinglun, withWeight=True):
print('%s %s' % (keywords, weight))
使用pandas包自带的方法遍历本级目录下的全部csv文件并输出文件中的内容并进行词频分析,输出结果中的中文却出现乱码的现象。
这是因为在csv文件中,使用的是GB-2312汉字编码,Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,只能输出乱码。
只需要注意一处代码的使用,即可避免这个问题。即pd.read_csv函数要多携带一个参数,指明编码方式,即可输出正常汉字。
file = pd.read_csv(filename, encoding='gbk')