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

Python导入5M行15列文本数据集显示异常,求排查解决

解决方案:处理文本导入时的乱码与列识别问题

这个问题我之前也碰到过,核心是编码识别错误加上大文件的读取适配问题,咱们一步步拆解解决:

1. 乱码原因分析

你看到的ÿþ是UTF-16 LE(小端序)的字节顺序标记(BOM)——因为你用了ISO-8859-1编码去解码UTF-16格式的文件,导致BOM被当成了普通字符显示,进而引发后续列的识别混乱(出现Unnamed列和NaN)。

2. 针对性解决方案

(1)修正编码参数

直接将编码改为utf-16,pandas会自动识别并跳过UTF-16的BOM,同时保持制表符分隔符不变:

import pandas as pd

path_in = 'C:/Users/cagdas/Python_SQLite/inputs/'
# 用UTF-16编码读取,自动处理BOM
df = pd.read_csv(path_in+'df.txt', delimiter="\t", encoding="utf-16")

如果还是有问题,可以尝试指定具体的字节顺序:encoding='utf-16-le'(小端)或encoding='utf-16-be'(大端)。

(2)适配5M行的大文件

5M行的数据集可能会占用较多内存,建议用chunksize参数分批读取,避免内存溢出:

chunk_list = []
# 每次读取10万行,可根据你的内存调整数值
for chunk in pd.read_csv(path_in+'df.txt', delimiter="\t", encoding="utf-16", chunksize=100000):
    chunk_list.append(chunk)
# 合并所有批次数据
df = pd.concat(chunk_list, ignore_index=True)

(3)验证分隔符准确性

如果修改编码后仍有Unnamed列,可能是实际分隔符不是单纯的\t(比如多个制表符/空格混合),可以尝试:

  • 使用sep='\s+'匹配任意空白字符
  • 指定engine='python'(Python引擎对复杂分隔符支持更好)
df = pd.read_csv(path_in+'df.txt', sep='\s+', encoding="utf-16", engine='python')

(4)手动排查文件头部

如果不确定编码或分隔符,可以先读取文件前几字节确认:

with open(path_in+'df.txt', 'rb') as f:
    # 读取前100字节查看原始字节内容
    print(f.read(100))

如果输出开头是b'\xff\xfe',就确认是UTF-16 LE格式;如果是b'\xfe\xff'则是UTF-16 BE格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:50:36