我对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
的输出,有没有比复杂的最后三行更短的方法呢?
答案 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中对字符串进行编码时,您需要将字符串编码为字节,然后需要对其进行解码以获取字符串作为结果。
如果您对您尝试做的事情有所了解,我可以尝试展开。