鱼C论坛

 找回密码
 立即注册
查看: 2120|回复: 7

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

[复制链接]
发表于 2022-6-2 09:11:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

操作系统:Windows10

Python版本: 3.10.4
print('abcd\b')
abcd
print('abcd \b')
abcd 




                               
登录/注册后可看大图


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

另外,我写了如下代码:
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这个字符造成的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-2 09:27:10 | 显示全部楼层    本楼为最佳答案   
我试了一下在命令行提示符和pycharm中运行都没事,只有在python自带的shell中运行有问题,这种我认为是shell不认识\b这个字符造成的

python自带的shell运行结果

python自带的shell运行结果

pycharm运行结果

pycharm运行结果

命令行提示符运行结果

命令行提示符运行结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-2 09:29:10 | 显示全部楼层


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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-2 10:45:23 | 显示全部楼层
Twilight6 发表于 2022-6-2 09:29
IDLE 不支持退格符 \b ,你可以换成其他 IDE,例如 PyCharm 、Vscode 等

还在坚持啊
今天难得有时间来一次就看到你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-2 11:25:27 | 显示全部楼层
liuzhengyuan 发表于 2022-6-2 10:45
还在坚持啊
今天难得有时间来一次就看到你了



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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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'的实际作用是:在当前行用所在位置后面的字符替换前面的字符,如果所在位置前面或后面没有字符则不生效。
这么理解对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

咱也没太深究过,因为\b这个在实际应用中我几乎没用过,你可以按照你的想法一个个试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 01:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表