给定以下字符串:
str = "\\u20ac €"
如何将其解码为€ €
?
使用 str.encode("utf-8").decode("unicode-escape")
返回 € â\x82Ø
(为了澄清,我正在寻找一个通用的解决方案,如何解码 unicode 和转义字符的任意组合)
最佳答案
一个简单快速的解决方案是使用 re.sub
来匹配 \u
和正好四个十六进制数字,并将这些数字转换为 Unicode 代码点:
import re
s = r"blah bl\uah \u20ac € b\u20aclah\u12blah blah"
print(s)
s = re.sub(r'\\u([0-9a-fA-F]{4})',lambda m: chr(int(m.group(1),16)),s)
print(s)
输出:
blah bl\uah \u20ac € b\u20aclah\u12blah blah
blah bl\uah € € b€lah\u12blah blah
关于python - 如何在Python中解码部分转义的unicode字符串(混合unicode和转义的unicode)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64037372/