字符串方法expandtabs和制表位(tabstops)
Python的字符串对象的内置方法: expandtabs 可以用来将字符串中的制表符(tab)扩展为若干个空格。默认情况下,一个tab的长度为8个字符的长度, 我们可以在调用 expandtabs 时传递一个整数作为参数,这个整数将作为tab的长度,比如:
S.expandtabs(4)
以上的代码就会返回一个新的字符串,将S中的tab扩展为空格,其中tab符号的长度定为4,
比如:
>>> '\t\t this\tis test'.expandtabs(4) ' this is test'
可是这里很奇怪的是,为什么this和is当中的tab变成了一个空格了呢?
要理解这个现象就要知道什么是制表位(tabstop)。tabstop顾名思义就是按制表符tab键后光标停留的位置,tabstop在屏幕或纸张或其它媒介上是固定间隔的一些位置,这个间隔的宽度就是tab的长度。比如我们在编辑器中输入三行内容,分别输入'a<TAB>1', ' b<TAB>2', ' c<TAB>3', 结果为:
a 1 b 2 c 3
我们可以看到虽然a, b, c的位置并不相同,但1,2,3都停在了相同的制表位。
现在应该就能理解为什么之前的例子中this和is中只有一个空格了:
' this is test' ^ ^ ^ ^ ^
上面的 ^ 表示制表位,is上的i处在第四个制表位上。
如果你只是要将tab符号替换为等长的空格,而不是上述的“扩展”,你可以使用:
>>> '\t\t this\tis test'.replace("\t", " ")
' this is test'














[...] 字符串方法expandtabs和制表位(tabstops) 标签数据导入 caching capitalize closure eTiny expandtabs File system find generator [...]
关于expandtabs(),我按照您的例子在shell里运行后,结果跟您的不一样
‘\t\t this\tis test.”.expandtabs(4)
得到:
this is test. # ‘this’ 与’is’之间并没有单个空格出现,而是expandtabs(4)起了作用
请问此问题出的那里,我用的版本是V2.5.4
编辑器的原因,前边应该是8空格,this 与 is之间是4空格,请不吝赐教,谢谢