一、str.expandtabs()
进入这个函数之前,我们来看看:
str_1 = 'abc\tdef'
print(str_1) # abc def
str_2 = '\t'
print(len(str_2)) # 1
根据打印结果来看,abc距离def一个字符的间距。在字符串中\t的长度为1
(tab键也就是\t,通常说的是4个字符长度,我们写分支结构时,也常用tab键进行4个字符长度的缩进)
str.expandtabs()这个函数的目的是把字符串中的tab符号\t
转为空格,具体转为几个空格,由参数tabsize决定。
误区:并不是参数tabsize是多少空格数为多少,两者不等。参数是多少说明有多少个字符为一组:若参数tabsize = 6,那么字符串将以长度为6的字符为一组;若参数tabsize没有写,则默认tabsize = 8,那么字符串将以长度为8的字符为一组。以不同的字符长度将字符串分为若干组。
语法:str.expandtabs(tabsize)
若参数tabsize没有写,则默认tabsize = 8,那么\t转为的空格数 = 8 - \t前字符串的长度
接下来,我们看看案例:
str = "runoob\t12345\tabc"
print(str.expandtabs())
# runoob 12345 abc
说明:
这里参数没有赋值默认为8,参数tabsize=8 > \t前字符串的长度=6
。那么\t转为的空格数 = 8 - \t前字符串的长度。
runnob 有 6 个字符,后面的 \t 填充 2 个空格
12345 有 5 个字符,后面的 \t 填充 3 个空格
案例:
str = "runoob\t12345\tabc"
print(str.expandtabs(2)) # runoob 12345 abc
print(str.expandtabs(3)) # runoob 12345 abc
print(str.expandtabs(4)) # runoob 12345 abc
print(str.expandtabs(5)) # runoob 12345 abc
print(str.expandtabs(6)) # runoob 12345 abc
说明:参数tabsize依次等于2,3,4,5,6,字符串将分别以2、3、4、5、6的字符长度分为一组。
tabsize=2,runoob字符长度为6可分为3组,ru、no、ob各为一组,第一个\t为一组那么代表连哥哥空格,1234分为两组,5和一个空格组队。
tabsize=4,runo为一组,ob加上两个空格为一组,故第一个\t为两个空格;1234为一组,5只能和三个空格为一组,故第二个\t为三个空格
tabsize=6,runnoob分为一组,由于runoob没有剩余字母分给第一个\t,故单独为一组
代表6个空格,12345还少一个长度即可组队,故这时第二个\t代表一个空格。