我正在尝试使用json.dump
方法将字符串转换为JSON文件。
在转换之前,我需要在每个表示为十六进制的char之前添加转义字符,例如'\x00'
或'\x96'
。
最后我需要转换字符串,如:
'\x94\xa0aaa'
要:
'\\x94\\xa0aaa'
我该怎么办?我尝试使用replace
方法,但它没有用。
答案 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号码。