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

pandas replace正则替换越南语Unicode编码未生效问题排查

替换失败的核心原因
  • 未接收replace的返回结果:pandas绝大多数数据处理方法默认不修改原数据,而是返回处理后的新对象,直接调用方法不赋值,原duong数据框不会发生任何变化。
  • 正则匹配规则失效:设置了regex=True,但映射字典里的key包含正则特殊字符+(该字符在正则中代表匹配前一个字符1次及以上),没有做转义的情况下,生成的匹配规则和要查找的字面量<U+1EDD>这类字符串完全不匹配,根本找不到要替换的内容。
  • 冗余操作:对整个DataFrame执行替换会遍历所有列,实际只需要替换存储文本的duong列即可,执行效率更高。
修正方案

当前场景是固定字符串替换,不需要使用正则,关闭正则模式做字面量替换即可,代码如下:

import pandas as pd

duong = pd.read_csv('sample.csv')
code = pd.read_csv('viscii.csv')
# 构造映射字典,注意viscii.csv的value列名前带空格,不要写错列名
code_dict = dict(zip(code['key'], code[' value']))
# 仅对duong列做替换,关闭正则模式,将结果赋值回原列
duong['duong'] = duong['duong'].replace(code_dict, regex=False)

执行后输出结果完全符合预期:

No                     duong
0   1           Ðuờng ÐT 605
1   2  Ðuờng Nam Kỳ Khởi Nghia
2   3         Ðuờng Duy Tân

如果确实需要使用正则模式,记得对key里的正则特殊字符做转义,示例如下:

import re
import pandas as pd

duong = pd.read_csv('sample.csv')
code = pd.read_csv('viscii.csv')
code_dict = {re.escape(k): v for k, v in zip(code['key'], code[' value'])}
duong['duong'] = duong['duong'].replace(code_dict, regex=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:36:20