【问题标题】:why does escape character \b shows an unknown character?为什么转义字符 \b 显示未知字符?
【发布时间】:2020-08-09 21:18:54
【问题描述】:

我有一行简单的代码

 print("Hello \bWorld!") 

HelloWorld! 的输出是

有什么问题?我使用python 3.5。我从 w3school.com 获取代码

【问题讨论】:

    标签: python python-3.x utf-8 python-3.5 unicode-escapes


    【解决方案1】:

    您的控制台输出无法显示'\b'。这与python无关。

    它在 Visual Studio 中工作:您可以通过在调试器中设置断点并检查值来验证它(大多数 IDE 都支持 UTF-8) - windows 控制台 f.e.没有。

    在 Visual Studio 中调试输出:

    对比Windows 中的控制台输出:

    和(这里看起来像你的)

    k = "Hello \bWorld!"
    print(k)
    

    【讨论】:

    • 感谢您的回答。不是 \b 假设要删除它之前的最后一个字符吗?还是我误解了?为什么在输出空间中仍然存在?有一个空格和未知字符。图片用于 pycharm IDE。即使我写了“Hello \bWorld!”在文件中而不是打印并使用记事本++之类的应用程序打开它,即使它没有正确显示。
    • @mike 如果你这样做 with open("f.txt","w") as f: f.write("Hello \bWorld") 你的文件包含的正是那个 .. 一个空格后跟一个 '\b' - 它不会奇迹般地删除空格和 \b (以及之前/之后字符串的其余部分)在写入之前从您的字符串中提取。如果您在兼容的 shell 中打印 "Hello \bWorld",它只会打印"HelloWorld" - 请参阅上面的windows 中的控制台输出。您的 IDE 决定显示完整的字符串,而不将 \b 应用于空格。
    • @Patrick Artner 另一个问题。如果您能为我澄清这一点,我将不胜感激。假设我有一个带有一些文本的文本文件,如果我这样做 write("\b") 是否应该删除文件中的最后一个字符?
    • @Mike no - 它会在文件中写入一个附加字符,即 '\b' (或二进制 \x08 )
    【解决方案2】:
    \b
    

    ASCII 退格 (BS) 删除 Python 3.x 中的前一个字符:

    print("ab\bc")
    

    输出:

    ac
    

    在您的情况下,它与 Python 无关,而是与控制台本身有关。

    据我所知:

    print("Hello \bWorld")   # HelloWorld
    

    pyFiddle

    Python Escape Characters

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多