gpt4 book ai didi

python - Backspace\b 转义序列不适用于多个 print() 函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:37 25 4
gpt4 key购买 nike

>>> print("x\by")
y

print("a", end="")
print("a", end="")
print("a", end="")
print("h", end="")

aaah

但是有多个打印语句,我得到这个输出 -

print("a\b", end="")
print("a\b", end="")
print("a\b", end="")
print("h\b", end="")

a a a h

为什么在每个字符后打印额外的空格。

当从 Windows 命令行执行时,代码工作正常,我在 Pycharm 的控制台中对其进行了测试。

但是在 python repl 中,\b 删除了前一个字符,而它应该将光标向后移动一个字符。

>>> print("a\b", end="")
>>>

最佳答案

每个终端或控制台都可以自由地以不同方式处理 \b 字符。 Python 所能做的就是将数据写出到 sys.stdout

在这里,您正在使用的控制台会将光标向前移动以进行单独的写入调用,它出现了。 \b 字符不会删除控制台中的任何内容,它只是将光标移回同一个写入调用中的一个点。

所以对于print('x\by', end=''),控制台输出x,后退一步,输出y 在同一个地方,现在已经记录了它写了 3 个字符,所以输出位置设置为第 3 列。接下来 print() 将从那个新位置开始输出数据.

您的 print() 代码恰好适用于大多数终端或控制台,因为它们中的大多数并不关心您输出了多少个字符,只关心光标当前所在的位置。但是你有一个行为不同的控制台不是 Python 的错

当使用 Python 交互式解释器时,要考虑到 它也 打印;所以使用 print("a\b", end="") 让 Python 用下一个 >>> 提示覆盖该行:

>>> print("a\b", end="")
>>>

改为使用 print("a\b\n", end=""),您会看到 a 仍然存在:

>>> print("a\b\n", end="")
a

关于python - Backspace\b 转义序列不适用于多个 print() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37085979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com