使用pandas.read_csv读取TXT文件失败,open显示十六进制字符
解决pandas读取竖线分隔TXT文件全及编码错误问题
问题现象
尝试用pandas.read_csv读取TXT文件时遇到以下问题:
- 默认UTF-8编码读取触发
UnicodeDecodeError - 指定latin1编码后得到全
的DataFrame - 直接读取文件内容时,每个字符后都带有
\x00空字节(示例:C\x00e\x00n\x00t\x00r\x00o\x00) - 文件实际为竖线(
|)分隔格式,可在Excel正常打开
原因分析
- 编码错误:文件采用**UTF-16LE(小端UTF-16)**编码——这是Windows系统常见的双字节Unicode编码,表现为ASCII字符后跟随空字节
\x00。latin1编码虽能避免解码错误,但会保留空字节,导致pandas无法识别有效字段。 - 分隔符未指定:
read_csv默认用逗号作为分隔符,而目标文件是竖线分隔,不指定sep参数会导致解析混乱,最终生成全的DataFrame。
解决方法
同时指定正确的编码和分隔符参数:
import pandas as pd from pathlib import Path path = Path('path/to/my/file.txt') # 使用UTF-16LE编码,并指定竖线为分隔符 df = pd.read_csv(path, dtype=str, encoding='utf-16le', sep='|') print(df)
若不确定编码,也可尝试encoding='utf-16',pandas会自动识别大小端,效果一致。
内容的提问来源于stack exchange,提问作者Barranka
相关产品推荐
相关产品推荐

