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来处理,即不输出空格,而给一个非整数参数时,将导致语法错误。

本文(完)

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

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

m.pythontab.com_Python expandtabs()函数的使用相关推荐

  1. python中expandtabs()函数的用法

    python字符串函数用法大全链接 expandtabs()函数 描述:返回一个字符串的副本.使原字符串中的制表符("\t")的使用空间变大.使用空格来扩展空间. 语法: str. ...

  2. m.pythontab.com_python字符串连接的三种方法及其效率、适用场景详解

    python3.x拼接字符串一般有以下几种方法: 1. 直接通过(+)操作符拼接s = 'Hello'+' '+'World'+'!' print(s) 输出结果:Hello World! 使用这种方 ...

  3. python center函数_数据类型和数据结构(三):字符串(4) 字符串内置函数(1)

    Photo by Ray Hennessy on Unsplash 4 字符串内置函数 除了使用+.*.in对字符串操作之外,我们还可以使用Python提供的多种字符串内置函数来对字符串进行操作处理. ...

  4. python字符串的内部函数_「Python」字符串操作内置函数

    目录: capitalize casefold center count encode decode endswith expandtabs find format format_map index ...

  5. python字符串函数用法大全

    目录 1.0 capitalize()函数 2.0 title()函数 3.0 swapcase()函数 4.0 lower()函数 5.0 upper()函数 6.0 casefold()函数 7. ...

  6. Python 基本数据类型 (二) - 字符串

    str.expandtabs([tabsize]): str类型的expandtabs函数,有一个可选参数tabsize(制表符大小) 详细来说,expandtabs的意思就是,将字符串中的制表符\t ...

  7. 来不及解释!python字符串常用方法大全,先收藏再说

    目录 序言: 1.0 capitalize()函数 2.0 title()函数 3.0 swapcase()函数 4.0 lower()函数 5.0 upper()函数 6.0 casefold()函 ...

  8. Python OTHERS 01 -- 字符串处理

    版权声明:本文为CSDN博主「九天小牛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.点击这里获取大佬文章 Python字符串函数の目录 序言 解决英文单词大小写问 ...

  9. OJ上的三道Python题

    昨天在OJ上做了19级理科大计基的12道题,有两个始终过不去,今天写了最后一道,过了. 把这三道题分享一下. 超市收银系统 时间限制: 1000 ms 内存限制: 65536 kb 题目 题目描述 本 ...

最新文章

  1. MongoDB(4.0)分片——大数据的处理之道
  2. 基于Xcode原型驱动的iOS应用设计
  3. idea 添加静态注释和live Templates
  4. mysql 类型解释_MySQL 数据类型说明解释
  5. 3.type关键字.rs
  6. 【Servlet】JSP学习-概念和运行原理
  7. .Net Core应用搭建的分布式邮件系统设计
  8. leetcode 290. 单词规律(hash)
  9. gdb 调试 TuMediaService
  10. java每隔一小时fullgc_JVM菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
  11. php 网路io是什么意思,io接口位于什么和什么之间
  12. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_2_Stream流中的常用方法_forEach...
  13. Java实现pdf文件转图片
  14. 浅谈工业网络架构及安全
  15. C# HttpWebRequest 模拟下载
  16. 量子计算与量子信息基础
  17. crux系列写作-篇首
  18. 【程序设计】日期和时间
  19. Mysql和Redis数据同步策略
  20. 计算机英语个人陈述,英文个人陈述范文汇总,计算机专业

热门文章

  1. yolt 卫星图像进行快速目标识别的新方法
  2. Loaded runtime CuDNN library: 7102 (compatibility version 7100) but source was compiled with 7004
  3. numpy.ravel() vs numpy.flatten()
  4. 基于相关滤波器的追踪(Correlation Filter-based Tracking)原理
  5. 用python实现语音的传输功能_用Python打造一款智能语音聊天小软件!
  6. 鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc
  7. 无缝衔接的人会遭报应吗_还为幼小衔接发愁吗?学会4招,孩子养成好习惯,与小学无缝对接...
  8. Jmeter之控制线程执行到某个结果时退出执行
  9. 如何在vim保存时获得sudo权限
  10. Spring中@Autowired和@Resource区别