程序猿那么可爱 2024-02-04 10:29 采纳率: 66.7%
浏览 41
已结题

python读取csv,中文输出乱码

问题描述
进行聊天记录可视化的过程中,用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

运行结果

img

我的初步解决思路
查看了系统编码和部分数据类型,见上面的代码
参考网上的教程,尝试了不同的编码和解码方法,见下。

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文件运行程序,并作一些读取上的修改

  • 写回答

20条回答 默认 最新

  • 叫兽-郭老师 Java领域新星创作者 2024-02-04 10:54
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,您可以参考如下,如果回答的不正确,及时评论区回复我,我会根据你错误描述追加回复。如果解决了您的问题,麻烦帮我点击个采纳!谢谢您的肯定!

    根据您的描述和尝试过的解决方案,您在读取CSV文件中包含中文的部分时遇到了乱码问题。由于您的CSV文件中的中文编码似乎不是ISO-8859-1,因此尝试了多种编码方式但未成功。

    建议您首先确定CSV文件的实际编码方式。您可以使用一些工具(如Notepad++、Sublime Text等)查看文件的编码格式。

    这里提供一种可能的解决方案:

    import pandas as pd
    
    # 假设CSV文件实际编码为UTF-8
    data = pd.read_csv('myfile.csv', usecols=cols, encoding='utf-8')
    
    # 或者尝试GB18030编码(针对某些旧的中文编码文件)
    data = pd.read_csv('myfile.csv', usecols=cols, encoding='gb18030')
    
    msgContent = ""
    for index, msgType, SubType, IsSender, createTime, content in data.itertuples():
        if index <= 5:
            msgContent += content
            print(msgContent)
            break
    

    如果以上两种编码方式都无效,请确保CSV文件没有损坏或被错误地转换过编码。另外,在创建CSV文件时应保持一致性,确保其内容始终使用相同的字符编码进行保存。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(19条)

报告相同问题?

问题事件

  • 专家修改了标签 2月18日
  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 赞助了问题酬金15元 2月4日
  • 展开全部

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀