Python chrs没有正确显示

时间:2016-08-12 19:53:12

标签: python python-3.x

当我有一个像"Hi \\x00"这样的字符串时,当我尝试使用像

这样的东西时
thatstring = thatstring.replace("\\x00",chr(0))

然后将其保存到文件

f = open("test.txt","r+")
f.seek(0)
f.write(thatstring)
f.truncate()
f.close()

并且在文件中它将显示为“Hi \ NULL”(NULL表示chr)

我认为问题是我在r +模式而不是br +写入文件所以它会在chr之前放一个\但我不能使用br +因为它必须用“字节格式”写入文件我的字符串必须包含字母和“特殊字符”。

我正在使用python 3.x

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:2)

文件中的文字是文字 \\x00,所以两个反斜杠。然后,您的代码只替换一个的反斜杠:

>>> filecontents = r'Hi \\x00'  # raw string literal to disable escape sequences
>>> list(filecontents.partition(' ')[-1])  # only the part after the space
['\\', '\\', 'x', '0', '0']
>>> filecontents.replace("\\x00", chr(0))
'Hi \\\x00'
>>> list(_.partition(' ')[-1])  # last result, everything after the space
['\\', '\x00']

文件内容不受Python字符串文字转义扩展的限制,因此无需在此处转义转义。

替换两个反斜杠或仅在文件中使用一个反斜杠。使用另一个原始字符串文字最简单地替换两者:

thatstring = thatstring.replace(r"\\x00", chr(0))