【发布时间】:2020-06-05 11:06:03
【问题描述】:
例如
print("a" + chr(8)) 结果是a,但是当我运行print("a" + chr(8) + "b") 结果是b,即使我这样做了
print("a" + chr(8) + "") 结果是a 为什么会这样?为什么我的第一行代码不直接删除这个字符?
【问题讨论】:
标签: python python-3.x character
例如
print("a" + chr(8)) 结果是a,但是当我运行print("a" + chr(8) + "b") 结果是b,即使我这样做了
print("a" + chr(8) + "") 结果是a 为什么会这样?为什么我的第一行代码不直接删除这个字符?
【问题讨论】:
标签: python python-3.x character
Python 本身并没有特别对待退格。您可能看到的是终端通过向左移动光标(不删除任何内容)专门解释退格键。
在终端中,退格键将光标向后移动,打印另一个字符会覆盖它。因此,当您提供 b 时,您不会看到 a。
>>> s = "a" + chr(8) + "b"
>>> print(s)
b
>>> s
'a\x08b'
>>> s = ("a" + chr(8))
>>> s
'a\x08'
【讨论】:
不会删除,你的字符串有转义字符,你可以自己查看:
In [115]: mystr = "a" + chr(8) + "b"
In [116]: mystr
Out[116]: 'a\x08b'
In [117]: print(mystr)
b
【讨论】:
在 ascii 表中,字符 8 是退格。退格键由您的操作系统处理。要问的问题是您的操作系统如何处理退格键,因为 python 所做的只是将 \x08 添加到字符串中。
【讨论】: