Python 3.x 为什么\b不适用于字符串的最后一个索引字符?
我正在研究python转义字符。我发现在 Python 3.8.为什么会这样Python 3.x 为什么\b不适用于字符串的最后一个索引字符?,python-3.x,string,Python 3.x,String,我正在研究python转义字符。我发现在 Python 3.8.为什么会这样 输入: 打印(“abc\bde\bf\bghi\bjklmn\bop\b\b”) 输出: abcdefghijklmno 这与终端如何解释转义字符有关。 那是几年前的事了。 引述: Python本身并不专门处理退格。您可能看到的是终端通过向左移动光标(不删除任何内容)来解释退格 这意味着,如果在\b之后有一个字符,终端将向左移动光标并用新字符“覆盖”原始字符。 如果没有其他字符,则不会覆盖旧字符 使用您的示例尝试
打印(“abc\bde\bf\bghi\bjklmn\bop\b\b”)
abcdefghijklmno
这与终端如何解释转义字符有关。 那是几年前的事了。 引述: Python本身并不专门处理退格。您可能看到的是终端通过向左移动光标(不删除任何内容)来解释退格 这意味着,如果在
\b
之后有一个字符,终端将向左移动光标并用新字符“覆盖”原始字符。
如果没有其他字符,则不会覆盖旧字符
使用您的示例尝试将输出管道化到hextump
,显示:
$ python3.8 -c
'print("abc#\bde#\bf#\bghi#\bjklmn#\bop\b")' | hexdump -C
00000000 61 62 63 23 08 64 65 23 08 66 23 08 67 68 69 23 |abc#.de#.f#.ghi#|
00000010 08 6a 6b 6c 6d 6e 23 08 6f 70 08 0a |.jklmn#.op..|
0000001c
您可以注意到那里的
08
字符(\b
)。这是否回答了您的问题?你能解释一下为什么think\b
不起作用吗?您的实际产出与预期产出有何不同?您如何检查\b
是否正常工作?您是否知道它通常不可见?