You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas.read_csv加载量热仪数据.txt文件遇UnicodeDecodeError求助

解决pandas.read_csv读取量热仪数据时的编码与分隔符问题

问题原因分析

  • 错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0说明文件不是UTF-8编码,字节0xff是UTF-16编码的字节顺序标记(BOM)的一部分,大概率文件采用UTF-16编码。
  • 数据采用多空格分隔,默认的逗号分隔符会导致pandas无法正确拆分列,同时编码错误会优先触发。

解决方案

1. 指定正确编码与空白分隔符

直接使用utf-16编码配合空白分隔符读取,代码如下:

import pandas as pd

# 读取文件,指定UTF-16编码与任意空白分隔符
data = pd.read_csv('TestFile.txt', encoding='utf-16', sep='\s+')

# 验证结果
print(data.head())
  • encoding='utf-16':自动识别UTF-16的BOM(无论LE/BE),解决解码错误。
  • sep='\s+':匹配任意数量的空格、制表符等空白字符,正确拆分Time和HeatFlow两列。也可以用delim_whitespace=True替代sep='\s+',效果一致。

2. 备选编码尝试(如果UTF-16无效)

如果上述代码仍报错,可通过查看文件头部字节确认编码:

with open('TestFile.txt', 'rb') as f:
    print(f.read(4))  # 打印前4个字节
  • 若输出为b'\xff\xfe':使用encoding='utf-16-le'
  • 若输出为b'\xfe\xff':使用encoding='utf-16-be'

3. 大文件处理说明

pandas的read_csv原生支持大文件读取,无需提前转换格式。如果文件过大导致内存压力,可添加chunksize参数分块读取:

# 分块读取,每块10000行
chunk_iter = pd.read_csv('TestFile.txt', encoding='utf-16', sep='\s+', chunksize=10000)
for chunk in chunk_iter:
    # 处理单块数据
    print(chunk.shape)

内容的提问来源于stack exchange,提问作者wrosenbe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:12:13