You need to enable JavaScript to run this app. 如何使用Python Pandas清洗UTF-16编码文本文件并转换为DataFrame
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Pandas清洗UTF-16编码文本文件并转换为DataFrame

解决方案

核心问题原因

  • 读取文件时未指定UTF-16编码,导致内容解析错乱
  • csv.reader默认使用逗号作为分隔符,你的文件以分号作为字段分隔符,导致整行内容被识别为单个元素,空row触发索引越界报错
  • 你代码中的"替换逻辑属于误操作,该字符是网页展示的HTML转义符,本地实际存储的文件中只有普通双引号,不需要额外替换

最优方案:直接用pandas内置方法读取

无需手动处理行拆分、字符替换,通过read_csv参数直接适配你的文件规则:

import pandas as pd
import csv

df = pd.read_csv(
    "test.csv",
    encoding="utf-16",  # 适配你的文件编码
    sep=";",  # 指定分号为字段分隔符
    quotechar='"',  # 识别双引号包裹的字段
    quoting=csv.QUOTE_ALL,
    usecols=["Day", "name", "age", "money"]  # 直接指定保留列
)

print(df)

运行后直接输出你期望的格式,空money列会自动转为NaN值。

原有代码修复方案

如果你要保留原有手动读取的逻辑,修改后代码如下:

import pandas as pd
import csv

cols = ['Day', 'name', 'age', 'money']
data = []
# 增加encoding参数指定UTF-16编码
with open('test.csv', 'r', encoding='utf-16') as f:
    # 给csv.reader指定分号为分隔符
    reader = csv.reader(f, delimiter=';', quotechar='"')
    # 跳过表头
    next(reader)
    for row in reader:
        # csv.reader已经自动完成拆分,截取前4个有效字段即可
        edited = row[:4]
        data.append(edited)

df2 = pd.DataFrame(data, columns=cols)
print(df2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 12:15:02