初学者求助,关于转义符 \b

2021-01-18 10:55:58 +08:00
 boell

在 vs code 中,运行以下 py 文件: print('aaa\b\b\b') 终端输出‘aaa’三个字符。

如果把代码改成: print('aaa\b\b\b',end='') 则什么都不输出(或者说先输出 aaa,然后被退格删除了)

这里面的逻辑如何理解?

2854 次点击
所在节点    Python
22 条回复
boell
2021-01-18 16:20:57 +08:00
谢谢各位的热心帮助。试了下确实不同的终端有不同的处理方式。之前是在 vs code 里试的。在 ipython 中,输出 3 个 a ;在 IDLE 下,输出 3 个 a 和 3 个方框;在 python 自带的终端下,提示符 '>>> ' 会遮挡前 4 个字符,所以代码 print('aaaaa\b\b\b\b\b',end='') 会显示 1 个 a 。
如果换成双字节的中文,情况更加复杂。比如 print('我是中国人\b\b\b\b\b',end='k'),有的会显示 “k 是中国人”,有的显示 “我是 k 国人”,我两台电脑上同样版本的 vs code 显示就不一样。
no1xsyzy
2021-01-19 12:42:05 +08:00
话说,有没有那种让终端内字符打印特别慢的工具?(管道工具?)那样或许可以方便理解
……
好,现场做了一个
https://gist.github.com/no1xsyzy/53f4f127f30a4c6b478b8e2a899e0b5a

记得 chmod +x pipe-throttle.py
然后 python3 -c 'print("aaa\b\b\b",end="")' | ./pipe-throttle.py 0.5
就很清晰了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/745822

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX