在Python 3.8.2中,如何将包含' uxxxx'序列的字符串转换为utf-8?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python 3.8.2中,如何将包含' uxxxx'序列的字符串转换为utf-8?相关的知识,希望对你有一定的参考价值。
我有一个包含以下内容的Python字符串:itu2019s
。当我打印字符串时,它显示为it\u2019s
。 u2019
表示Unicode右单引号,在此用作“它的”中的撇号。
我想将u2019
更改为实际的Unicode字符,但我受阻。我have发现可以使用str.replace("\u2019", "u2019")
来做到这一点,但是有几公吨的unicode字符,我想要一个更通用的解决方案。
附加信息:我正在使用Windows 10,并使用python解释器进行测试。我希望这会有所帮助。
>>>s = "it\u2019s" # that is two backslashes is a row.
>>>print(s)
itu2019s
>>>b = s.encode()
>>>print(b)
b'it\u2019s'
h = b.hex(" ",1)
>>> print(h)
69 74 5c 75 32 30 31 39 73
因此十六进制为5c;那是反斜杠。反斜杠实际上是字符串的一部分,而不是python解释Unicode转义序列。
答案
最佳情况下,我建议您尝试确保输入中的首先没有转义,但如果这样不可能,则可以用正则表达式替换(
s
是您的原始字符串):
re.sub(r"\u([0-9a-f]{4})", lambda m: chr(int(m.group(1), 16)), s)
\u
的出现,后跟四个小写的十六进制数字,并将它们分组在第一组中以供后面参考。将这些序列替换为与由这四个数字表示的int值相对应的字符:chr(int(m.group(1), 16)
以上是关于在Python 3.8.2中,如何将包含' uxxxx'序列的字符串转换为utf-8?的主要内容,如果未能解决你的问题,请参考以下文章
python编程:如何将一个包含若干整数的List写入dat文件中