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

如何用pandas处理CSV列中的Unicode转义字符转换为重音字符?

解决CSV中Unicode转义字符的解析问题

我来帮你搞定这个Unicode转义的问题!你遇到的情况是:CSV里的Col2列把Unicode转义序列(比如\u00e9)当成了普通字符串存储,而pandas默认不会自动解析这些转义——这就是为什么你加了encoding='utf-8'也没效果,因为这个参数是用来解码文件的字节流,而不是处理字符串里的转义序列。

下面是两种简单有效的修复方法:

方法一:读取后批量处理列

先正常读取CSV,再对Col2列做转义解码处理,如果你的Col2是列表格式的字符串(比如例子里的["consommation ..."]),还可以顺便把它转成实际的列表对象:

import pandas as pd
import ast

# 正常读取CSV,不用额外改encoding(Col1已经正常读取,问题不在文件编码)
df = pd.read_csv('data.csv', delimiter=',', header=0)

# 定义处理函数:解码Unicode转义,可选解析为列表
def fix_unicode(s):
    # 把字符串中的Unicode转义序列解码成实际字符
    decoded_str = s.encode('utf-8').decode('unicode-escape')
    # 如果是列表格式的字符串,转成Python列表(不需要的话可以删掉try-except块)
    try:
        return ast.literal_eval(decoded_str)
    except ValueError:
        return decoded_str

# 应用到Col2列
df['Col2'] = df['Col2'].apply(fix_unicode)

# 查看修复后的结果
print(df.head())

# 保存修复后的CSV,用utf-8编码确保字符正常显示
df.to_csv('fixed_data.csv', encoding='utf-8', index=False)

方法二:读取时直接转换

如果你想一步到位,在读取CSV的过程中就处理Col2,可以用converters参数指定转换函数:

import pandas as pd
import ast

def convert_col2(s):
    decoded = s.encode('utf-8').decode('unicode-escape')
    # 同样,如果不需要转列表就直接return decoded
    return ast.literal_eval(decoded)

# 读取时直接处理Col2
df = pd.read_csv('data.csv', delimiter=',', header=0, converters={'Col2': convert_col2})

为什么这两种方法有效?

encode('utf-8').decode('unicode-escape')这个操作的作用是:把字符串里的Unicode转义序列(比如\u00e9)转换成对应的UTF-8字符(é)。而ast.literal_eval则是把列表格式的字符串(比如["abc"])转换成真正的Python列表对象,方便后续操作。

测试一下的话,处理后Col2里的\u00e9nerg\u00e9tique会变成énergétique,b\u00e2timents会变成bâtiments,和Col1的显示完全一致啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:24:14