我有一个包含转义的utf-8序列的py3字符串,例如“Company\\fffffffc2\\ffffff ae”,我想将其转换为正确的utf 8字符串(在示例中,它将是“Company®”,因为转义序列是c2 ae)。我试过了
print (bytes("Company\\\\ffffffc2\\\\ffffffae".replace(
"\\\\ffffff", "\\x"), "ascii").decode("utf-8"))
结果:Company\xc2\xae
^{pr2}$结果:公司
(错了,因为chreacts是分开治疗的,但是它们应该一起治疗。在
如果是的话
print (b"Company\xc2\xae".decode("utf-8"))
它给出了正确的结果。 公司®
如何通过编程实现这一点(即从py3 str开始)
一个简单的解决方案是:
但是,如果在输入字符串本身中有一个三引号
'''
,那么它将失败。在下面的代码没有这个问题,但是它不像第一个代码那么简单。在
第一步是在正则表达式上拆分字符串。奇数项是ascii部分,例如
^{pr2}$"Company"
;每个偶数项对应一个转义的utf8代码,例如"\\\\ffffffc2"
。每个子字符串根据其在输入字符串中的含义转换为字节。最后,所有部分连接在一起,并从字节解码为字符串。在代码可以优化。Ascii部分不需要编码/解码,连续的十六进制代码应该连接起来。在
相关问题 更多 >
编程相关推荐