Python字符串:各种奇葩的内置方法

一、字符串的秘密

学习了列表和元组,我们知道了分片的概念,事实上也可以应用于字符串上:

>>> str1 = "I love zww"
>>> str1[:6]
'I love'

在python中没有字符这个类型,在Python看来,所谓字符,就是长度为1的字符串。当要访问字符串的其中一个字符的时候,只需要索引列表或元组的方法来索引字符串即可:

>>> str1[5]
'e'

字符串和元组一样,都是属于"一言既出、驷马难追"的家伙。所以一旦定下来就不能直接对它们进行修改了,如果必须修改,我们就需要委曲求全…

>>> str1[:6]+"插入的字符串"+str1[6:]
'I love插入的字符串 zww'

二、各种内置方法

下面的表总结了字符串的所以方法及对应的含义。

capitalize()                            把字符串的第一个字符改为大写
casefold()                               把整个字符串的所有字符改为小写
center(width)                           将字符串居中,并使用空格填充至长度 width 的新字符串
count(sub[, start[, end]])                 返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
encode(encoding='utf-8', errors='strict')     以 encoding 指定的编码格式对字符串进行编码。
endswith(sub[, start[, end]])                检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
expandtabs([tabsize=8])                   把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
find(sub[, start[, end]])                  检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
index(sub[, start[, end]])                    跟find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
isalnum()                              如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
isalpha()                              如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
isdecimal()                            如果字符串只包含十进制数字则返回 True,否则返回 False。
isdigit()                              如果字符串只包含数字则返回 True,否则返回 False。
islower()                              如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。
isnumeric()                            如果字符串中只包含数字字符,则返回 True,否则返回 False。
isspace()                              如果字符串中只包含空格,则返回 True,否则返回 False。
istitle()                              如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。
isupper()                              如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
join(sub)                              以字符串作为分隔符,插入到 sub 中所有的字符之间。
ljust(width)                           返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
lower()                                转换字符串中所有大写字符为小写。
lstrip()                               去掉字符串左边的所有空格
partition(sub)                         找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '')
replace(old, new[, count])                 把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
rfind(sub[, start[, end]])                 类似于 find() 方法,不过是从右边开始查找。
rindex(sub[, start[, end]])                类似于 index() 方法,不过是从右边开始。
rjust(width)                           返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
rpartition(sub)                         类似于 partition() 方法,不过是从右边开始查找。
rstrip()                               删除字符串末尾的空格。
split(sep=None, maxsplit=-1)                不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
splitlines(([keepends]))                    在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。。
startswith(prefix[, start[, end]])           检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
strip([chars])                            删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
swapcase()                               翻转字符串中的大小写。
title()                                 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
translate(table)                        根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。
upper()                                 转换字符串中的所有小写字符为大写。
zfill(width)                            返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。

这里选几个常用的给大家演示一下用法,首先是casefold(),它的作用是把整个字符串的所有字符改为小写:

>>> str1 ="Love"
>>> str1.casefold()
'love'

count(sub[, start[, end]]) 其作用是返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。注:在python文档中,用方括号扣起来的表示可选。

>>> str1 = "AbcABCabCabcABCabc"
>>> str1.count('ab',0,15)
2

如果你要查找某个字符串在该字符串中的位置,可使用find(sub[, start[, end]])或者index(sub[, start[, end]])方法。如果找到了,则返回值是第一个字符的索引值;如果找不到,则find()方法会返回-1,index()方法会抛出异常。(注:异常是可以被捕获并处理的错误,目前你可以认为就是错误)

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> str1 = "I love zww"
>>> str1.find("zww")
7
>>> str1.find("good")
-1
>>> str1.index("zww")
7
>>> str1.index("good")
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    str1.index("good")
ValueError: substring not found

程序员很喜欢用join(sub)来连接字符串,但它的用法也许会让你感到诧异。join是以字符串作为分隔符,插入到sub字符串中所有的字符之间:

>>> 'x'.join("Test")
'Txexsxt'
>>> '_'.join("FishC")
'F_i_s_h_C'

为什么说“程序员喜欢用 join()来连接字符串”,我们不是有很好用的连接符号(+)吗?这是因为当使用连接符号(+)去拼接大量的字符串时是非常低效的,因为加号会引起内存复制以及垃圾回收操作。所以对于大量的字符串拼接来说,使用join()方法的效率会高一些。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> 'I' + ' ' + 'love' + ' '+'fishc.com'
'I love fishc.com'
>>> ' '.join(['I','love','fishc.com'])
'I love fishc.com'

replace(old, new[, count])方法如其名,就是替换指定的字符串:

>>> str1 ="I love you"
>>> str1.replace("you","fishc.com")
'I love fishc.com'

split(sep=None, maxsplit=-1)跟join()正好相反,split()用于拆分字符串:

>>> str1 = ' '.join(['I','love','fishc.com'])
>>> str1
'I love fishc.com'
>>> str1.split()
['I', 'love', 'fishc.com']
>>> str2 = '_'.join("FishC")
>>> str2
'F_i_s_h_C'
>>> str2.split(sep='_')
['F', 'i', 's', 'h', 'C']

猜你喜欢

转载自blog.csdn.net/sinat_38682860/article/details/109027924
今日推荐