这是怎么回事? ? ?
为什么会这样? ? ? {:10_285:}>>>x = """
12345
67890""" #12345为1个Tab, 67890为4个空格
>>>x.expandtabs(4)
'\n 12345 \n 67890'
>>>
我原本想让它把Tab变成4个空格的, 为什么会这样? {:5_94:} tab 在字符串中的表示方法应该是 \t 吧,我不知道直接输入空格会不会生效 12345为1个Tab, 67890为4个空格 这句话是何意?完全是风马牛不相干的事情! 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"""
jackz007 发表于 2022-8-14 10:42
这句话是何意?完全是风马牛不相干的事情!
前面的空格{:10_250:} suchocolate 发表于 2022-8-14 11:24
shell为了照顾输入和回显,当直接输入tab时,实际自动转成了空格。
把一个Tab的空白换成4个空格的空白{:10_250:} 其实你的操作已经成功了。问题在于你没有理解expandtabs这个方法的效果,它不会在原来的字符串x上做修改,而是给你一个新的字符串,这个字符串就是修改后的结果。
在你使用x.expandtabs(4)之前先打印一下x,你会发现因为Tab和空格的宽度不同导致12345和67890确实没有对齐;
但是print(x.expandtabs(4))你会发现,12345和67890已经对齐了,也就是说expandtabs确实成功把Tab替换为4个空格了,只是因为你没有对这个新的字符串做进一步操作,所以IDLE会把这个新的字符串直接显示给你看。如果你把两行代码写到文件中你甚至不会看到任何输出,因为程序认为你主动舍弃了expandtabs的结果。 元豪 发表于 2022-8-15 10:54
前面的空格
我也看不懂 jackz007 发表于 2022-8-14 10:42
这句话是何意?完全是风马牛不相干的事情!
真是令人头大的陈述句 元豪 发表于 2022-8-15 10:56
把一个Tab的空白换成4个空格的空白
还有什么问题吗? 4楼正解,验证过了看图片
页:
[1]