我有一个字符串“foo”,我需要将“\”连接到字符串的前面。
如果我这样做:
s = "foo"
s = "\" + s
# Gets EOL while scanning string literal error
现在,如果我这样做:
s = "\\" + s
打印然后输出:
"\foo"
但是...
s = s.encode('utf-8')
print(s)
输出:
b'\\foo'
当获得utf-8编码时,我需要一个斜杠。
答案 0 :(得分:1)
打印bytes
对象时(由encode
返回),print
会打印出对象的表示,其中反斜杠加倍。< / p>
但如果再次解码对象,则只能获得一个斜杠:
s = r"\foo".encode('utf-8')
print(s.decode('utf-8'))
结果:
\foo
还要注意(在bytes
对象上):
>>> print(chr(s[0]))
\
>>> print(chr(s[1]))
f
字节对象中只有一个斜杠
(除了:你不能使用"\"
甚至r"\"
,因为字符串解析将无法看到字符串的结尾,请参阅我的旧答案之一python raw string notation throwing error with trailing slash)