带反斜杠的字符串的多次转换

时间:2018-05-01 11:15:24

标签: string python-3.x escaping backslash

我对Python中的字符串编码感到十分困惑。我读了许多其他答案,但都没有显示,下面代码的最后三行真正发生了什么:

filename = "/path/to/file.txt" #textfile contains only the string "\bigcommand"

with open(filename,'r') as f:
    file = list(f)

val = file[0]                         #val = '\\bigcommand\n'
valnew = val.encode('unicode-escape') #valnew = b'\\\\bigcommand\\n'
valnewnew = str(valnew,'utf-8')       #valnewnew = '\\\\bigcommand\\n'

为什么valnew变量突然变成字节串?我以为它会像以前一样 - 但只是将转义字符加倍?

为了获得valnewnew的输出,有没有比复杂的最后三行更短的方法呢?

1 个答案:

答案 0 :(得分:1)

这将为您提供valnewnew的输出:

val = file[0].encode('unicode-escape').decode()
with open('t', 'r') as f:
    file = list(f)

    val = file[0].encode('unicode-escape').decode() # value: '\\\\bigcommand\\n'

在python3.x中对字符串进行编码时,您需要将字符串编码为字节,然后需要对其进行解码以获取字符串作为结果。

如果您对您尝试做的事情有所了解,我可以尝试展开。