Python字符串转字节转换。双反斜杠问题

14

I've got a problem. I've this string:

a=O\x8c\x90\x05\xa1\xe2!\xbe

如果我使用:

c=str.encode(a)

这是结果:

b'O\\x8c\\x90\\x05\\xa1\\xe2!\\xbe'

我需要将这些双反斜杠改为单反斜杠,并且我确实需要数据类型是BYTES。我需要返回以下内容:

c=b'0\x8c\x90\x05\xa1\xe2!\xbe'

而且,type(c)==bytes。有什么想法吗?


2
print(repr(a)) 会输出什么? - Anand S Kumar
抱歉。这个:'O\x8c\x90\x05\xa1\xe2!\xbe' - Teo Albano
1个回答

21
你可以使用str.decode()并将编码设置为unicode-escape。然后,使用所需的编码进行解码以获取字节数组。例如 -
c = a.decode('unicode-escape').encode('<required encoding>')

演示 -

>>> a
b'O\\x8c\\x90\\x05\\xa1\\xe2!\\xbe'
>>> c = a.decode('unicode-escape').encode('ISO-8859-1')
>>> c
b'O\x8c\x90\x05\xa1\xe2!\xbe'

没事,我没注意到c是字节。 - Teo Albano
还是没有得到我想要的。我需要这个输出 --> c=b'0\x8c\x90\x05\xa1\xe2!\xbe' 你的解决方案给我这个: b'O\xc2\x8c\xc2\x90\x05\xc2\xa1\xc3\xa2!\xc2\xbe' - Teo Albano
这是因为\xe2不是有效的utf-8编码。使用有效的编码应该可以解决问题。 - Anand S Kumar
@TeoAlbano 现在检查一下,使用 ISO-8859-1 应该可以工作。 - Anand S Kumar
1
如果您正在通过Redis中的DUMP转储和数据,并尝试进行RESTORE,则绝对需要使用“ISO-8859-1”进行解码,然后再进行编码。 - John Paul Barbagallo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接