Photo by Ray Hennessy on Unsplash

4 字符串内置函数

除了使用+、*、in对字符串操作之外,我们还可以使用Python提供的多种字符串内置函数来对字符串进行操作处理。你可以使用如下命令,查看Python为我们提供的字符串内置函数。

>>> dir(str)

['__add__', '__class__', '__contains__','__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__','__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__','__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__','__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__','__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__','__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode','endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum','isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower','isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust','lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex','rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith','strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

其中,带双下划线的是Python中的魔法函数,这里不讲。让我们从capitalize函数讲起。

4.1 capitalize函数

要想了解某个函数的功能细节,我们可以使用help函数进行查看,例如:

>>> help(str.capitalize)

Help on method_descriptor:

capitalize(self, /)

Return a capitalized version of the string.

More specifically, make the first character have upper case and the restlower

case.

从函数的帮助信息,我们可以知道capitalize函数用来把给定字符串的首字母变成大写,然后将其返回。若给定字符串为非英文字母,则原样返回给定字符串。例如:

>>> s.capitalize()

'Python'

>>> "2".capitalize()

'2'

>>> "_".capitalize()

'_'

>>> "爱".capitalize()

'爱'

4.2 casefold函数

casefold函数用来把给定字符串中的大写字母转换成小写字母,返回转换后的字符串。这个函数不仅对英文有效,对于其他非英文语言也有效。

>>> s = "To bE,OR nOt ToBe"

>>> s.casefold()

'to be,or not to be'

>>> s1 = "ß" #德文

>>> s1.casefold()

'ss'

4.3 center函数

s.center(with,fillchar=' '):返回一个把字符串s居中,并使用指定字符(默认为空格)填充至指定长度(width)的新字符串。

>>> s = "python"

>>> s.center(10)

'  python  '

>>> s.center(10,'/')

'//python//'

>>> s.center(3,'/')

'python'

>>> s.center(7,'/')

'/python'

>>> s.center(9,'/')

'//python/'

4.4 count函数

s.count(sub[, start[, end]]):返回sub在字符串s里面出现的次数。其中start和end参数是可选的。若指定start或者end,则返回s[start:end]范围内sub出现的次数。

>>> s = 'pythonpythonpython'

>>> s.count('o')

3

>>> s.count("th")

3

>>> s.count("th",4)

2

>>> s.count("yt",4,15)

2

4.5 encode函数

我们知道计算机内部只认数字,字符要在计算机内部进行处理存储,必须将其按照某种方式转换成数字形式。这种转换方式指的就是字符串的编码方式。编码方式有多种,比如ASCII编码、Unicode编码、UTF-8编码、GB2312、GBK等。

encode(encoding='utf-8', errors='strict'):该函数使用encoding指定的编码方式对字符串进行编码,返回一个bytes对象。encoding参数用来指定编码方式,error参数用来指定不同的错误处理方案。

>>> s = "你好"

>>> s

'你好'

>>> s.encode("gb2312")

b'\xc4\xe3\xba\xc3'

>>> s.encode("gbk")

b'\xc4\xe3\xba\xc3'

>>> s.encode("utf-8")

b'\xe4\xbd\xa0\xe5\xa5\xbd'

encode函数在对给定字符串编码之后会返回一个bytes对象,然后我们就可以使用bytes对象的decode方法来解码给定的bytes对象。有关这方面的内容,我们将在后面讲解,此处不谈。

4.6 endswith函数

s.endswith(suffix, start, end)检查字符串s是否以suffix结束,若是,返回True,否则返回False。其中start和end都是可选参数,它们用来指定检查的范围,省略它们表示检查整个字符串。

>>> s = "python" * 3

>>> s

'pythonpythonpython'

>>> s.endswith('th')

False

>>> s.endswith('on')

True

>>> s.endswith('thon')

True

>>> s.endswith('py',0,8)

True

4.7 startswith函数

startswith函数的完整格式为:

s.startswith(prefix[, start[, end]])

该函数用来检查字符串s是否以prefix开始,若是,返回True,否则返回False。其中start和end都是可选参数,它们用来指定检查的范围,省略它们表示检查整个字符串。若只指定start,则检查子串s[start:]是否以prefix开始;若同时指定了start和end参数,则检查子串s[start:end] 是否以prefix开始。

>>> s

'pythonpythonpython'

>>> s.startswith('py')

True

>>> s.startswith('th')

False

>>> s.startswith('th',2,8)

True

4.8 expandtabs函数

s.expandtabs(tabsize=8)用来把字符串s中的\t转换为若干个空格,具体转换成多少个空格,与tabsize和\t在字符串s中的位置有关。为了确定要转换成多少个空格,可以采取如下几个步骤:

第1步:首先根据\t所在的位置把字符串s分成若干组。请注意,最后一个\t之后的字符不再参与分组。

第2步:然后再根据tabsize进一步细分分组(每tabsize个字符分为一组,若某个分组中的总字符数小于或等于tabsize,则不再分组。\t算一个字符)。

第3步:忽略那些不包含\t字符的分组。在各个包含\t字符的分组中,把\t转换成空格,空格个数等于tabsize减去\t之前的字符数(同一个分组中,\t是一个字符)。

>>> s ="I\tlove\tpython"

# 查看一下字符串长度

>>> len(s)

13

>>> s

'I\tlove\tpython'

# 若tabsize为0,

# 则直接从字符串中删除\t字符

>>> s.expandtabs(0)

'Ilovepython'

# 前面1个空格,后面一个空格

>>> s.expandtabs(1)

'I love python'

# 前面1个空格,后面2个空格

>>> s.expandtabs(2)

'I love python'

# 前面2个空格,后面两个空格

>>> s.expandtabs(3)

'I love  python'

# 前面3个空格,后面4个空格

>>> s.expandtabs(4)

'I  love    python'

# 前面4个空格,后面1个空格

>>> s.expandtabs(5)

'I   love python'

# 前面4个空格,后面两个空格

>>> s.expandtabs(6)

'I    love  python'

下面我们以s.expandtabs(4)为例,画个图把计算空格格式的过程描述一下。

第1步:根据\t的位置对s分组,如下:

图5-18

第2步:根据tabsize(本例为4)进一步分组,如下图:

图5-19

第3步:算出各组需要补齐的空格数(前面3个空格,后面4个空格),并把\t字符替换掉。

图5-20

4.9 find函数

find函数用来在某个字符串中查找指定字符串,若找到,则返回待查字符串的最小索引值;找不到就返回-1。find函数的完整格式如下:

s.find(sub[, start[, end]])

其中,s指定要在哪个字符串中查找,sub是待查找字符串,start和end参数是可选的,它们用来指定在字符串s的哪个范围内进行查找。如果不指定start和end参数,则默认在整个字符串s中进行查找。若只指定start,则在s[start:]范围内查找;若同时指定了start和end参数,则在s[start:end]范围中查找sub子串。若找到,则返回sub在s[start:end]范围中首次出现的索引值(最小索引值),找不到,就返回-1。

>>> s = "python"*3

>>> s

'pythonpythonpython'

>>> s.find('th')

2

>>> s.find('th',4)

8

>>> s.find('th',4,8)

-1

>>> s.find('th',4,18)

8

4.10 rfind函数

与find函数类似,rfind函数也用来在某个字符串中查找指定字符串。两者的不同之处在于,find函数按照从左到右的顺序查找,而rfind函数按照从右到左的顺序查找。除此之外,rfind函数和find函数都是一样的。

>>> s

'pythonpythonpython'

>>> s.rfind('th')

14

>>> s.rfind('th',4)

14

>>> s.rfind('th',4,10)

8

>>> s.rfind('th',16,18)

-1

4.11 index函数

index函数完整格式如下:

s.index(sub[, start[, end]])

index函数功能和find函数一样,唯一的区别在于,当找不到sub时,index会引发一个值错误(ValueError),而非像find函数那样返回-1。

>>> s

'pythonpythonpython'

>>> s.index('th')

2

>>> s.index('th',4)

8

# 若找不到,则抛出ValueError

>>> s.index('th',4,8)

Traceback (most recent call last):

File "", line 1, in

s.index('th',4,8)

ValueError: substring not found

>>> s.index('th',4,18)

8

4.12 rindex函数

rindex函数的完整格式为:

s.rindex(sub[, start[, end]])

rindex函数的功能和rfind一样,不同之处在于,当找不到sub时,rindex会引发一个值错误(ValueError),而非像rfind函数那样返回-1。

>>> s

'pythonpythonpython'

>>> s.rindex('th')

14

>>> s.rindex('th',4)

14

>>> s.rindex('th',4,10)

8

>>> s.rindex('th',16,18)

Traceback (most recent call last):

File "", line 1, in

s.rindex('th',16,18)

ValueError: substring not found

4.13 format函数

format函数是字符串诸多函数中非常重要的一个,用来对字符串进行格式化。有关使用format函数对字符串进行格式化的内容,我们将在“字符串格式化”一节中详细讲解,这里暂且只举几个简单的例子。

>>> "{} likes Python,{} likesPython,too!"\

.format('Tom','Jack')

'Tom likes Python,Jack likes Python,too!'

>>> "{1} likes Python,{0}likes Python,too!"\

.format('Tom','Jack')

'Jack likes Python,Tom likes Python,too!'

>>> "{name1} likesPython,\

{name2} likes Python,too!"\

.format(name2='Tom',name1='Jack')

'Jack likes Python,Tom likes Python,too!'

4.14 lower函数

s.lower()函数用来把字符串s中的所有大写字母变为小写字母,对于不存在小写形式的字符原样输出。

>>> s = "PyTHoN"*3

>>> s

'PyTHoNPyTHoNPyTHoN'

>>> s.lower()

'pythonpythonpython'

>>> '我爱Pyhon'.lower()

'我爱pyhon'

4.15 upper函数

s.upper()函数用来把字符串s中的所有小写字母变为大写字母,对于不存在大写形式的字符原样输出。

>>> s

'PyTHoNPyTHoNPyTHoN'

>>> s.upper()

'PYTHONPYTHONPYTHON'

>>> '我爱Pyhon'.upper()

'我爱PYHON'


关注我

“人生苦短,要学Python”

python center函数_数据类型和数据结构(三):字符串(4) 字符串内置函数(1)相关推荐

  1. python不允许使用关键字作为变量名、允许使用内置函数_【判断题】Python不允许使用关键字作为变量名,但是允许使用内置函数名作为变量名,不过这会改变函数名的含义,所以不建议这样做...

    [判断题]Python不允许使用关键字作为变量名,但是允许使用内置函数名作为变量名,不过这会改变函数名的含义,所以不建议这样做 更多相关问题 [单选,A2型题,A1/A2型题] <十四经发挥&g ...

  2. python不允许使用关键字作为变量名、允许使用内置函数_Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义。...

    Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义. 答:对 对于检查出的无效MAC帧,以太网负责重传. 答:× 哪一年开始中国成为世界第二大经济体? 答:2 ...

  3. day4 匿名函数、装饰器、生成器、迭代器、内置函数、 json 与 pickle 模块

    文章目录 1.列表生成式 2.匿名函数 3.装饰器 4.生成器 5.迭代器 6.内置函数 7.json & pickle 序列化与反序列化 1.列表生成式 可通过特定语句便捷生成列表 list ...

  4. python我想对你说_python学习第12天----内置函数

    1.内置函数 python解释器提供的,直接可以使用的函数,如print,input等 1)作业域相关 ①globals() 以字典的类型返回全部局部变量 ②locals()   以字典的类型返回当前 ...

  5. 第三周 day14:内置函数

    ⼀. 本节主要内容: 1. 内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print., input等等. 截⽌ 到python版本3.6.2 python⼀共提供 ...

  6. python中函数包括标准库函数吗_Python标准库:内置函数divmod(a, b)

    本函数是实现a除以b,然后返回商与余数的元组. 如果两个参数a,b都是整数,那么会采用整数除法,结果相当于(a//b, a % b).如果a或b是浮点数,相当于(math.floor(a/b), a% ...

  7. 23-26 Python File方法、OS文件/目录方法、异常处理、内置函数

    23Python File方法 23.1open()方法 Python open()方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数.如果该文件无法被打开,会抛出OSEr ...

  8. python列表内置函数_Python-列表总结(操作符、方法、内置函数、相关模块)

    目录 上篇文章思考题 简介 创建与赋值 操作符 访问与更新(序列操作符切片) 判断元素是否存在(成员关系操作in,not in) 拼接列表(连接操作符+) 重复(重复操作符*) 删除 方法 添加 删除 ...

  9. Python学习 Day8-2 python的三元表达式(三目运算符)、lambda表达式、内置函数

    Python中的三元表达式(三目运算符) 语法:为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号) >>print(1 if 5 > 3 else 0) 1 Py ...

最新文章

  1. python threading模块多线程源码示例(一)
  2. hiho_1089_floyd最短路
  3. 扩展中国剩余定理(模板)
  4. ubuntu19.10 安装搜狗输入法
  5. 国内程序员加班严重!听听外国网友怎么说。
  6. 用几何语言表示线段ab的中点c,做完这30道精选题,你的几何图形绝对满分!
  7. 魅族17将配备GaN氮化镓充电器:快充安全又高效
  8. web app开发利器 - iscroll4 解决方案
  9. python自学看什么书-自学Python一年,看了几十本书,我发现了这些捷径!
  10. matlab影像阿伯斯投影,D3.js 世界地图(一)投影方式
  11. java fakepath_解决文件上传取不到真实路径问题(fakepath)
  12. 开氏温度与摄氏度换算_温度是怎么来的,有没有物质没有温度?
  13. 计算机enter代表什么意思,enter是什么意思
  14. 计算机取消补考,2005级《计算机文化基础》补考通知
  15. 电脑PC端如何下载B站视频?
  16. 源码安装禅道11.0总结
  17. 【STC8H8K64U】开天斧3.1学习笔记——LED闪烁
  18. 我参加筑路机械专业筹建过程的回忆
  19. python实现AES对文件加解密(这里使用ECB密码本模式)
  20. TeamViewer商业版改成免费版

热门文章

  1. 网关冗余工作原理(总结)
  2. Okay 第一篇文章从java字符串开始
  3. 大整数相加链表实现(Add Two Numbers)
  4. 1.gloox开发环境搭建
  5. 你需要知道的基础算法知识——STL和基础数据结构(四)
  6. java写文件 自动创建目录吗_Java 自动创建日志目录及文件
  7. Go range实现原理及性能优化剖析
  8. docker的swarm介绍
  9. Android7.0 PowerManagerService 之亮灭屏(二) PMS 电源状态管理updatePowerStateLocked()...
  10. crazyradio焊接和下载固件过程