使用Pandas读取文本文件遇UnicodeDecodeError错误求助
Pandas读取文本文件编码错误与表格转换解决办法
解决编码错误
你碰到的UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0...,是因为文件实际编码不是你尝试的utf-8或latin1。0xb0字节在GBK/GB2312编码中对应“°”字符,优先试试指定GBK编码:
import pandas as pd df = pd.read_csv("PS.prg1903-001_KSK_LB__0_00001.txt", encoding="gbk") print(df)
如果GBK不行,用chardet库检测真实编码:
- 先安装chardet:
pip install chardet
- 检测编码:
import chardet with open("PS.prg1903-001_KSK_LB__0_00001.txt", 'rb') as f: detect_result = chardet.detect(f.read(10000)) # 读取部分内容检测 print(detect_result['encoding'])
把输出的编码值代入read_csv的encoding参数即可。
要是临时想跳过错误字节,可加errors参数(不推荐长期使用,会丢失部分字符):
df = pd.read_csv("PS.prg1903-001_KSK_LB__0_00001.txt", encoding="utf-8", errors="replace")
字符串数字列表转表格
如果你的文件是固定宽度对齐格式(数据按列整齐排列,无明显分隔符),别用read_csv,改用pd.read_fwf自动识别列:
df = pd.read_fwf("PS.prg1903-001_KSK_LB__0_00001.txt", encoding="替换成正确编码")
如果数据是用空格/制表符分隔的字符串,用sep参数指定分隔符:
# 匹配任意数量空格作为分隔符,无表头时加header=None df = pd.read_csv("PS.prg1903-001_KSK_LB__0_00001.txt", encoding="正确编码", sep='\s+', header=None)
内容的提问来源于stack exchange,提问作者user18152330
相关产品推荐
相关产品推荐

