lalilulelo_3 发表于 2022-6-2 09:11:12

Python字符串里退格转义符'\b'显示方块的问题。

本帖最后由 lalilulelo_3 于 2022-6-2 09:13 编辑

纯新手小白,学习字符串的时候尝试各种转义符,换行转义符'\n'没问题,但是退格转义符不能出来想要的效果。

操作系统:Windows10

Python版本: 3.10.4

print('abcd\b')
abcd
print('abcd \b')
abcd 




https://xxx.ilovefishc.com/forum/202205/31/123221g2hhdigqrwrhw2g9.png.thumb.jpg

自己百度了一下,好像是操作系编码格式的原因?但都没有给出解决方案。
请教各位,这个问题的原因具体是什么?如何解决?

另外,我写了如下代码:

x = 'Hello!\n'
print(x * 3)
Hello!
Hello!
Hello!

print(x * 3 + '\b')
Hello!
Hello!
Hello!


我希望我的字符串换行3次,但是最后不出现一个空行,是不是可以用退格转义符来操作?还有其他方法吗(不使用其他命令)?

当初约定 发表于 2022-6-2 09:27:10

我试了一下在命令行提示符和pycharm中运行都没事,只有在python自带的shell中运行有问题,这种我认为是shell不认识\b这个字符造成的

Twilight6 发表于 2022-6-2 09:29:10



IDLE 不支持退格符 \b ,你可以换成其他 IDE,例如 PyCharm 、Vscode 等

当初约定 发表于 2022-6-2 09:30:35

本帖最后由 当初约定 于 2022-6-2 09:32 编辑

如果想后面不出现换行的话那就建议使用for循环来打印了
for i in range(3):
    if i == 2:
      print("nihao",end="")
    else:
      print("nihao")

liuzhengyuan 发表于 2022-6-2 10:45:23

Twilight6 发表于 2022-6-2 09:29
IDLE 不支持退格符 \b ,你可以换成其他 IDE,例如 PyCharm 、Vscode 等

还在坚持啊{:10_250:}
今天难得有时间来一次就看到你了

Twilight6 发表于 2022-6-2 11:25:27

liuzhengyuan 发表于 2022-6-2 10:45
还在坚持啊
今天难得有时间来一次就看到你了



嘿嘿,我也是上个月左右回来,这个几个月时间也比较充裕,边学习边解决些论坛的问题{:10_282:}

lalilulelo_3 发表于 2022-6-2 11:25:54

本帖最后由 lalilulelo_3 于 2022-6-2 11:37 编辑

感谢楼上所有大佬的帮助,已经在命理提示符下测试成功了(VScode安装失败,我会另外发一个帖子提问……)!
可惜最佳答案只能选择一个,再次感谢。

另外我还发现了一个很有意思的问题,退格转义符'\b'只能用在字符串的开头或中间,放在末尾是无效的!

>>> print("abcd")
abcd
>>> print('abcd\b')
abcd
>>> print('abc\bd')
abd
>>> print('abcd\b ')
abc
>>> print('abcd\b')
abcd

这是不是代表:
'\b'的意思“并不是删除前一个字符”,而是“用后面的字符取代前面的字符”,所以如果'\b'后面没有字符,它就不会生效。

也就是说,无论如何我是无法通过'\b'来删除我上面提到的“删除3次换行后末尾空行”的问题?

>>> print('abcd' + '\n' + '\b ' + '')
abcd

>>> print('abc\nd')
abc
d
>>> print('abc\n\bd')
abc
d

又试了一下,无论后面有没有字符,都不能“删除”前面的换行,也就是说“ '\b'的实际作用是:在当前行用所在位置后面的字符替换前面的字符,如果所在位置前面或后面没有字符则不生效。”
这么理解对吗?

当初约定 发表于 2022-6-2 11:53:16

lalilulelo_3 发表于 2022-6-2 11:25
感谢楼上所有大佬的帮助,已经在命理提示符下测试成功了(VScode安装失败,我会另外发一个帖子提问……)! ...

咱也没太深究过,因为\b这个在实际应用中我几乎没用过,你可以按照你的想法一个个试试{:10_256:}
页: [1]
查看完整版本: Python字符串里退格转义符'\b'显示方块的问题。