原因:Python字符串赋值意外将'\b'变为'\x08'和'\a'变为'\x07',为何Python如此设计?
我看到有两个回答和一些评论,提到了另一个问题,但大家都没有解释为什么Python会做这样的改变?比如说,'/b'变成了'/x08',这只是结果,但为什么会这样呢?谢谢。
我尝试把这个路径"F:\big data\Python_coding\diveintopython-5.4\py"加到sys.path里,这样下面的代码就可以直接导入了。
在使用了:sys.path.append('F:\big data\Python_coding\diveintopython-5.4\py')
之后,我发现这个路径在sys.path里变成了:'F:\x08ig data\Python_coding\diveintopython-5.4\py'
然后我测试了以下代码:mypath1='F:\big data\bython_coding\aiveintopython-5.4\ry'
结果mypath1现在变成了:'F:\x08ig data\x08ython_coding\x07iveintopython-5.4\ry'
所有的'\b'都变成了'\x08',而'\a'变成了'\x07'
我搜索了一段时间,但还是找不到原因,能不能请你帮我看看,任何反馈或帮助都非常感谢。谢谢!
2 个回答
转义序列 \a
和 \b
分别等同于 \x07
和 \x08
。
>>> '\a'
'\x07'
>>> '\b'
'\x08'
如果你想要在代码中表示反斜杠 \
,你需要对它进行转义,也就是写成 \\
。
>>> '\\a'
'\\a'
>>> '\\b'
'\\b'
或者你可以使用原始字符串字面量,这样就不需要转义了:
>>> r'\a'
'\\a'
>>> r'\b'
'\\b'
你的字符串被转义了。可以看看关于 字符串字面量 的文档:
反斜杠(\)这个字符用来转义那些本来有特殊含义的字符,比如换行符、反斜杠本身,或者引号字符。字符串字面量可以选择性地以字母
r' 或
R' 开头;这样的字符串叫做原始字符串,它们对反斜杠的转义规则有所不同。
这种用法可以追溯到60年代早期。它允许你输入一些标准键盘上无法直接输入的字符。例如,如果你在Python解释器中输入:
print "\xDC"
...你会得到 Ü
。在你的例子中,你有 \b
- 代表退格键 - Python会以 \xhh
的形式显示它,其中 hh
是08的十六进制值。\a
是ASCII铃声的转义序列:试试 print "\a"
,打开声音,你应该能听到一声哔。