m.pythontab.com_Python expandtabs()函数的使用

Python中expandtabs()函数的作用是允许用户自定义(扩展)字符串中 '\t' 字符输出的空格数量。在Python中TAB制表键字符输出的空格数量默认为8。该函数在处理输出的空格数量时会把tab字符前边的字符数考虑进去。也就是说实际输出的空格数量是给定的tab的尺寸减去tab键前面的字符数量。

一、expandtabs()函数的语法格式

str.expandtabs(tabsize = 8)

str:待处理的字符串

参数:tabsize,指定tab的尺寸,默认为8个空白字符。

返回值:返回处理后的字符串。

二、expandtabs()函数使用示例

1、参数使用默认值

str1 = "R\tC#\tPHP\tPython"

print(str1)

res1 = str1.expandtabs()

print(res1)

输出结果:

R C# PHP Python

R C# PHP Python

因为Python中tab的默认值为8,所有两者输出是相同的。

2、正常使用参数

str1 = "A\tBC\tDEF\tGHI"

print(str1)

res1 = str1.expandtabs(10)

print(res1)

res2 = str1.expandtabs(6)

print(res2)

输出结果:

A BC DEF GHI

A BC DEF GHI

A BC DEF GHI

在上面的输出结果中第一行实际上默认使用的TAB的尺寸是8;

第二行,A和BC之间有9个空格,因为在第一个\t前有一个字母,所以10 -1 = 9,在BC和DEF之间有8个空格,因为在第2个\t前有两个字母,10 -2 = 8;同理,在DEF和GHI之间应有7个空格。

用同样的算法,可以推出第三行的A和BC之间应有6 -1 = 5个空格,BC和DEF之间应有 6 - 2 = 4个空格 ,DEF和GHI之间应有6 -3 = 3个空格。

另外,需要说明的是,\t前面的字符中有空格时,毫无疑问,空格也会作为字符计算在内,看下面的例子:

str1 = "Python is easy.\tPython!"

print(str1)

print(str1.expandtabs(16))

print(str1.expandtabs(18))

输出结果:

Python is easy. Python!

Python is easy. Python!

Python is easy. Python!

因为str1本身有15个字符(含空格),所以tabsize为16时,实际上\t被处理成1(16-15=1)个空格,当为18时,\t被处理成3个空格(18-15 = 3)。而第1行的输出中间也有一个空格,这是怎么回事呢?(请继续看下面的内容。)

3、\t前面的字符多于指定的tabsize情况

在这种情况下,可以认为Python中expandtabs()函数按如下规则进行处理:

tabsize * n - m > 0 (m为\t前面的字符数量)

也就是说,指定的tabsize数乘以一个大于0的数后减去\t前面的字符数量的结果值需大于0,即至少有一个空白符。见下面的例子:

str1 = "PythonPython\tR"

print(str1.expandtabs(6))

print(str1.expandtabs(7))

print(str1.expandtabs(8))

print(str1.expandtabs(9))

输出结果:

PythonPython R

PythonPython R

PythonPython R

PythonPython R

因为\t前面有12个字符,第1个 6 * 3 - 12 = 6 ,所以第1个输出了6个空格,第2个 7*2 - 12 =2 ,所以第2个有2个空格,按照这样的规则,第3个有 4 个空格,第4个有6个空格。

4、多个\t连续出现的情况

有时字符串中连着有多个\t情况,或者出现换行符\n的情况,这时,Python的expandtabs函数是如何处理的呢?

str1 = "C\tC#\t\tC++\t\nJava\tPython"

print(str1)

res1 = str1.expandtabs(12)

print(res1)

输出结果:

C C# C++

Java Python

C C# C++

Java Python

从上面输出结果中,通过数空格数,可以知道,在连续的\t中,紧挨字符的\t是输出减去前面字符数的空格数,而第2个\t会原样输出tab键规定数量的空格。注意:\t前面的\r,\n不会被当作一个字符来处理。

5、参数小于等于0或无效

如果tabsize参数指定为0或负数,甚至是小数会出现什么情况呢?看下面的例子:

>>>

str1 = "翔宇亭IT乐园\twww.biye5u.com"

>>>

print(str1.expandtabs()) # 中间会有1个空格

翔宇亭IT乐园 www.biye5u.com

>>>

print(str1.expandtabs(0)) # 输出中间会没有空格

翔宇亭IT乐园www.biye5u.com

>>>

print(str1.expandtabs(-4))

翔宇亭IT乐园www.biye5u.com

>>>

print(str1.expandtabs(-8))

翔宇亭IT乐园www.biye5u.com

>>>

print(str1.expandtabs(2.3)) # 将导致TypeError错误:参数类型错误

Traceback (most recent call last):

File "", line 1, in

print(str1.expandtabs(2.3))

TypeError: integer argument expected, got float

>>>

从以上输出情况可以看出,expandtabs()函数把负数一律按0来处理,即不输出空格,而给一个非整数参数时,将导致语法错误。

2020721281024846.png

本文(完)

尊重劳动人民成果,转载请注明出处并给出链接地址:翔宇亭IT乐园(http://www.biye5u.com)-文章链接地址:http://www.biye5u.com/article/python/2020/6464.html

如内容有不妥之处,请留言评论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值