如何在每个十六进制字符之前添加转义字符?蟒蛇

时间:2018-03-08 15:32:36

标签: python python-2.7

我正在尝试使用json.dump方法将字符串转换为JSON文件。 在转换之前,我需要在每个表示为十六进制的char之前添加转义字符,例如'\x00''\x96'

最后我需要转换字符串,如:

'\x94\xa0aaa'

要:

'\\x94\\xa0aaa'

我该怎么办?我尝试使用replace方法,但它没有用。

4 个答案:

答案 0 :(得分:1)

反斜杠在Python中有特殊含义。 如果你定义一个文字字符串,如' \ x94 \ xa0aaa'它没有真正的反斜杠。 如果你像r' \ x94 \ xa0aaa'那样定义它。有真正的反斜杠。

在你的replace()调用中你必须加倍反斜杠,因为原始字符串不能以反斜杠结尾。

答案 1 :(得分:0)

试试这个:

import re
old = r'\x94\xa0aaa'
new = re.sub(r"\\", r"\\\\", old)
print(new)

Result:  \\x94\\xa0aaa

答案 2 :(得分:0)

当然没有。第一行是一个字符串的表示,第二行是另一个字符串的表示。

这是你可以做的:

a = '\x94\xa0aaa' # displays as '\x94\xa0aaa', but indeed contains 94 and a0 in hex, followed by three "a", so 94a0616161
b = a.repr() # displays as '\\x94\\xa0aaa', but indeed contains '\x94\xa0aaa', i. e. 5c7839345c786130616161.

答案 3 :(得分:0)

试试这个:

bs = chr(92)
print(r"\x94\xa0aaa".replace(bs,bs*2))

92代表\ ascii号码。