鱼C论坛

 找回密码
 立即注册
查看: 2091|回复: 10

[已解决]这是怎么回事? ? ?

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

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

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

x
为什么会这样? ? ?

>>>x = """
        12345               
    67890"""        #12345为1个Tab, 67890为4个空格
>>>x.expandtabs(4)
'\n    12345       \n    67890'
>>>

我原本想让它把Tab变成4个空格的, 为什么会这样?
最佳答案
2022-8-15 22:15:22
其实你的操作已经成功了。问题在于你没有理解expandtabs这个方法的效果,它不会在原来的字符串x上做修改,而是给你一个新的字符串,这个字符串就是修改后的结果。

在你使用x.expandtabs(4)之前先打印一下x,你会发现因为Tab和空格的宽度不同导致12345和67890确实没有对齐;
但是print(x.expandtabs(4))你会发现,12345和67890已经对齐了,也就是说expandtabs确实成功把Tab替换为4个空格了,只是因为你没有对这个新的字符串做进一步操作,所以IDLE会把这个新的字符串直接显示给你看。如果你把两行代码写到文件中你甚至不会看到任何输出,因为程序认为你主动舍弃了expandtabs的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-14 09:53:33 | 显示全部楼层
tab 在字符串中的表示方法应该是 \t 吧,我不知道直接输入空格会不会生效
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-14 10:42:29 | 显示全部楼层
   
12345为1个Tab, 67890为4个空格
这句话是何意?完全是风马牛不相干的事情!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-14 11:24:22 | 显示全部楼层
shell为了照顾输入和回显,当直接输入tab时,实际自动转成了空格。
print(ord(' '))  # 输入tab,ord可以显示字符的ascii码,32是空格,9是tab,这里我实际输入了tab,但ord检测是空格,也就是shell自动转成了空格。
32
print(ord(' '))
32
print(ord('\t'))
9

如果想输入tab,两种方式:\t或者字符串前加r
s = """\tfishc"""
s = r"""[一个tab]fishc"""
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-15 10:54:56 | 显示全部楼层
jackz007 发表于 2022-8-14 10:42
这句话是何意?完全是风马牛不相干的事情!

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

使用道具 举报

 楼主| 发表于 2022-8-15 10:56:52 | 显示全部楼层
suchocolate 发表于 2022-8-14 11:24
shell为了照顾输入和回显,当直接输入tab时,实际自动转成了空格。

把一个Tab的空白换成4个空格的空白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-15 22:15:22 | 显示全部楼层    本楼为最佳答案   
其实你的操作已经成功了。问题在于你没有理解expandtabs这个方法的效果,它不会在原来的字符串x上做修改,而是给你一个新的字符串,这个字符串就是修改后的结果。

在你使用x.expandtabs(4)之前先打印一下x,你会发现因为Tab和空格的宽度不同导致12345和67890确实没有对齐;
但是print(x.expandtabs(4))你会发现,12345和67890已经对齐了,也就是说expandtabs确实成功把Tab替换为4个空格了,只是因为你没有对这个新的字符串做进一步操作,所以IDLE会把这个新的字符串直接显示给你看。如果你把两行代码写到文件中你甚至不会看到任何输出,因为程序认为你主动舍弃了expandtabs的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-15 22:57:53 From FishC Mobile | 显示全部楼层
元豪 发表于 2022-8-15 10:54
前面的空格

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

使用道具 举报

发表于 2022-8-15 22:58:47 From FishC Mobile | 显示全部楼层
jackz007 发表于 2022-8-14 10:42
这句话是何意?完全是风马牛不相干的事情!

真是令人头大的陈述句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-15 23:01:40 | 显示全部楼层
元豪 发表于 2022-8-15 10:56
把一个Tab的空白换成4个空格的空白

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

使用道具 举报

发表于 2022-8-16 00:31:39 From FishC Mobile | 显示全部楼层
4楼正解,验证过了看图片
IMG_20220815_235730.jpg
IMG_20220816_002426.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 12:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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