Python如何通过Unicode编码替换字符串中的指定字符
问题原因分析
- Python的字符串属于不可变对象,遍历过程中拿到的每个
charr都是独立的临时变量,修改该变量不会对原字符串产生任何影响,这是代码不生效的核心原因。 - 逐字符判断替换的写法冗余,完全可以直接对完整字符串做全局替换。
- 直接用Unicode编码指定替换字符更稳妥,可避免不同编辑器/环境下阿拉伯字符显示混淆导致的匹配失败。
正确实现代码
方案1:直接全局替换(无需归一化)
original = 'رزاﻗﻲ' # 替换所有\u064A(ي)为\u06CC(ی) result = original.replace('\u064A', '\u06CC') print(result)
输出结果为预期的رزاقی。
方案2:先归一化再替换
如果业务需要先做NFKD归一化,调整写法如下即可:
import unicodedata as ud original = 'رزاﻗﻲ' normal_form = ud.normalize('NFKD', original) # 对归一化后的完整字符串做替换 result = normal_form.replace('\u064A', '\u06CC') print(result)
内容的提问来源于stack exchange,提问作者BlueBlue
相关产品推荐
相关产品推荐

