如何从bytes对象中删除双反斜杠?

2024-05-13 14:55:16 发布

您现在位置:Python中文网/ 问答频道 /正文

例如, t=结构编码(消息)

打印(t) 我得到了双刀。在

b'\\xda\\xad\\x94\\xb4\\x0bg\\x92]R\\x9a1y\\x9d\\xed\\x04\\xd5\\x8e+\\x07\\xf8\\x03\\x1bm\\xd6\\x96\\x10\\xca80\\xe26\\x8a

我想得到的结果是

b'\xda\xad\x94\xb4\x0bg\x92]R\x9a1y\x9d\xed\x04\xd5\x8e+\x07\xf8\x03\x1bm\xd6\x96\x10\xca80\xe26\x8a'

任何帮助都将不胜感激。在


Tags: x04x03x07xd5x92xedxb4xda
3条回答

你不能这么做因为 '\\' 表示斜线,而不是双斜线。 例如,如果要将msg转换为字符串并使用print函数打印msg,则只能看到一个斜杠。在

我想把这个作为对Adrian Ghrasims答案的评论,但是它太长了,所以我把它作为一个单独的“答案”。在

对于普通符号,可以使用replace-函数

In [1]: temp = 'aa1aa2aa3aa4aa5'
In [2]: temp
Out[2]: 'aa1aa2aa3aa4aa5'
In [3]: temp.replace('aa', 'a')
Out[3]: 'a1a2a3a4a5'

但是,如果您尝试对双斜杠执行相同的操作,则会出现语法错误

^{pr2}$

有不同的编码选项可以帮助你得到你想要的。 下面我进行编码和解码以获得所需的结果:

from codecs import encode

# I have the string shortened for presentation
your_string = "\\xda\\xad\\x94"

encode(your_string.encode().decode('unicode_escape'),"raw_unicode_escape")

现在,如果你有一个没有转义的字符串,那就更好了:

^{pr2}$

它们都产生一个字节值:

b'\xda\xad\x94'

我发现可以使用其他编码而不是'raw_unicode_escape',但我认为最好使用它。在


有关编码的详细信息,请参见:

Python 2 Standard Encodings
Python 3 Standard Encodings

相关问题 更多 >