Python 3.x 为什么\b不适用于字符串的最后一个索引字符?

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之后有一个字符,终端将向左移动光标并用新字符“覆盖”原始字符。 如果没有其他字符,则不会覆盖旧字符 使用您的示例尝试

我正在研究python转义字符。我发现在 Python 3.8.为什么会这样

  • 输入:

    打印(“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
    是否正常工作?您是否知道它通常不可见?