问题描述
进行聊天记录可视化的过程中,用python读取csv文件,某一列是中文,输出是乱码
相关代码
import pandas as pd
import sys
print(sys.getdefaultencoding()) # 获得系统编码
cols = ["Type", "SubType", "IsSender", "CreateTime", "StrContent"]
data = pd.read_csv('myfile.csv', usecols=cols, encoding='ISO-8859-1')
print(type(data))
print(type(data.itertuples()))
msgContent = "" # 定义空字符串
for index, msgType, SubType, IsSender, createTime, content in data.itertuples():
if index<=5:
msgContent += content
print(msgContent)
break
运行结果
我的初步解决思路
查看了系统编码和部分数据类型,见上面的代码
参考网上的教程,尝试了不同的编码和解码方法,见下。
engine ='python' # 读取文件时加上这句,输出仍是乱码
msgContent.encode('ISO-8859-1','ignore').decode('ISO-8859-1') # 输出仍是乱码
msgContent.encode('gbk','ignore').decode('gbk') # 输出仍是乱码
msgContent.encode('gbk','ignore').decode('utf-8') # 报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte
msgContent.encode('gb18030','ignore').decode('gbk') # 报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x81 in position 0: illegal multibyte sequence
无法解决这个问题。如果输出是乱码,做成的词云图全是英文,因为文本消息之外的其他消息都是英文存储的,有点像html
求解决办法!!
Tips: 需要自建一个有中文的csv文件运行程序,并作一些读取上的修改