python pandas读取csv、excel文件乱码

本文介绍了解决从CSV文件读取数据时遇到的乱码问题的过程。通过确定正确的编码格式(utf-16),并使用适当的分隔符,最终成功地用Pandas库正确加载了数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载了一个csv表格,pandas读取了,打出来的是乱码。

df = pd.read_csv('11.csv')
df.head()

在这里插入图片描述
想着转换为Excel格式看看,是否就好了。就用wps打开,并另存为 .xls结尾的excel文件,使用还是乱码。

应该是编码问题,但是不知道咋解决,在读取时,设置为utf-8也没用。

就想到用记事本软件打开看看是啥格式。用sublime打开那个csv,按ctrl+S(保存该文件),在sublime下方出现了一条提示,看到了这个文件的格式,是utf-16.
在这里插入图片描述

然后加上编码就可以读取了。虽然这个是csv文件,但是看到只有一列,值中间还有、

df = pd.read_csv('11.csv', encoding='utf16', sep='\t')
df.head()
### 解决Pandas读取CSV文件时的编码问题 当使用 `pandas` 的 `read_csv()` 函数读取 CSV 文件时,可能会遇到编码错误。常见的编码选项如 `'utf-8'` 或者 `'gbk'` 可能无法正常工作并抛出异常[^1]。 为了处理这种情况,可以尝试不同的编码格式来找到适合当前文件的那个。通常情况下,以下几种方法可以帮助解决问题: #### 尝试多种编码格式 ```python import pandas as pd try: df = pd.read_csv('yourfile.csv', encoding='utf-8') except UnicodeDecodeError: try: df = pd.read_csv('yourfile.csv', encoding='gbk') except Exception as e: print(f"Failed with error {e}") ``` 如果上述两种常见编码都不适用,则可能需要进一步调查源文件的实际编码类型。可以通过工具或库(比如 chardet)检测未知文件的具体编码形式[^3]。 #### 使用chardet探测编码 安装 `chardet` 库之后,可以用它来猜测文件的编码: ```bash pip install chardet ``` 然后编写如下代码片段来进行编码识别: ```python import chardet with open('yourfile.csv', 'rb') as file: raw_data = file.read() result = chardet.detect(raw_data) encoding_detected = result['encoding'] print("Detected Encoding:", encoding_detected) df = pd.read_csv('yourfile.csv', encoding=encoding_detected) ``` 这种方法能够更可靠地确定正确的字符集设置,从而避免因不匹配而产生的乱码现象[^5]。 另外,在某些特殊场景下,即使指定了正确的编码参数仍然会出现解析失败的情况。这时应该考虑是否存在 BOM (Byte Order Mark),这是一些文本编辑器会在 UTF 编码文档开头写入的一个标记字节序列。对于带有BOM标志位的UTF-8文件,可以在调用`read_csv()`函数时指定额外的关键字参数`engine='python'`以绕过C引擎中的潜在缺陷[^2]。 最后值得注意的是,确保所使用的 Python 版本及其依赖项是最新的版本也很重要,因为旧版可能存在已知漏洞或者兼容性问题[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值