在Python 3.8.2中,如何将包含' uxxxx'序列的字符串转换为utf-8?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python 3.8.2中,如何将包含' uxxxx'序列的字符串转换为utf-8?相关的知识,希望对你有一定的参考价值。

我有一个包含以下内容的Python字符串:itu2019s。当我打印字符串时,它显示为it\u2019su2019表示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文件中

python如何从字符串中筛选出包含词最多的那个字符串呢!

Python如何在包含' n'的行中打印带有换行符的文本

说说在 Python 中,如何找出所有字符串匹配

python怎样将一次循环中不同条件下筛选的字符串合成一个字符串

Python程序设计 实验6:函数式编程