Python字符串操作方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/meiqixiao/article/details/88774488

大小写转换

1.返回S字符串的大写、小写格式

S.lower()
S.upper()
>>>print('abCD'.lower())
abcd
>>>print('abCD'.upper())
ABCD

2.返回S字符串中所有单词的首字母大写且其他字母小写

S.title()
>>>print('ab CD'.title())
Ab Cd

3.返回S字符串首字母大写,其余所有字母小写的格式

S.capitalize()
>>>print('ab CD'.capitalize())
Ab cd

4.对S字符串中所有字母大写变小写,小写变大写

S.swapcase()
>>>print('ab CD'.swapcase())
AB cd

判断语句

1.is判断

  • S.islower():判断是否为小写
  • S.isupper():判断是否为大写
  • S.title():判断首字母是否为大写
>>>print('abc'.islower())
True
>>>print('ABC'.isupper())
True
>>>print('Ab Cd'.istitle())
True
  • S.isspace():判断字符串是否是空白(空格、制表符、换行符)字符
  • S.isprintable():判断字符串是否可以打印(制表符、换行符等不可打印,空格可打印)
  • S.isdentifier():判断是否满足标识符定义规则
>>>print(' '.isspace())
True
>>>print(''.isspace())
False
##没有任何字符不是空白
>>>print(' '.isprintable())
True
>>>print('\n'.isprintable())
False
>>>print('1abc'.isdentifier())
False
>>>print('_abc_'.isdentifier())
True
## 只能以下划线或者字母开头,并且只能由字母,下划线或者数字组成
  • S.isdigit():判断S是否是数字
  • S.isalpha():判断S是否是字母
  • S.isalnum():判断S 是否是字母或数字
>>>print('121'.isdigit())
True
>>>print('abc'.isalpha())
True
>>>print('abc121'.isalnum())
True
  • S.endswith(t) :字符串S以字符串t结尾,区分大小写
  • S.startswith(t): 字符串S以字符串t开头,区分大小写
>>>S="Hello,World!"
>>>print(S.endswith('!'))
True
>>>print(S.startswith('h'))
False

设置函数格式

1.将字符串居中,左右两边使用fillchar进行填充,使得整个字符串的长度为width。fillchar默认为空格。如果width小于字符串的长度,则无法填充直接返回字符串本身(不会创建新字符串对象)。

S.center(width[,fillchar])
>>>print('ab'.center(6,'*'))
**ab**
>>>print('ab'.center(6))
  ab
>>>print(len('ab'.center(6))
  6  
 >>>print('abc'.center(2))
 abc

2.填充字符串左边(右边),使整体长度为width。若不指定fillchar则认为用空格填充,若width小于或等于字符串S的长度,则无法填充,直接返回字符串。

S.ljust(width[,fillchar])
S.rjust(width[,fillchar])
>>>print('abc'.ljust(5,'*'))
xyz**
>>>print('abc'.rjust(5,'*'))
**abc

3.用0填充在字符串S的左边使其长度为width。如果字符串S由正负号开头,则0填充在这两个符号的后面,且符号也算入长度。 如果width小于或等于字符串S的长度,则无法填充,直接返回S本身。

>>> print('abc'.zfill(5))
00abc
>>> print('-abc'.zfill(5))
-0abc
>>> print('+abc'.zfill(5))
+0abc

字符串索引

1.返回字符串S中子串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算,不包括end边界。

S.count(sub[,start[,end]])
>>>print('abababab'.count('ab',1,7))
2
##因为index=1,所以从b开始搜索,因为不包括end,所以查找范围为‘bababa’

2.endswith()检查字符串S是否已suffix结尾,返回布尔值的True和False。suffix可以是一个元组(tuple)。可以指定起始start和结尾end的搜索边界。同理startswith()用来判断字符串S是否是以prefix开头。

S.endswith(suffix[, start[, end]])
S.startswith(prefix[, start[, end]])
##suffix为普通字符串时
>>>print('abcabc'.endswith('abc'))
True
>>>print('abcabc'.endwith('bca',1,4))
True
##搜索范围为‘bca’
##suffix是元组(tuple)时,只要tuple中任意一个元素满足endswith的条件,就返回True。

>>> print('abcxyz'.endswith(('ab','xyz')))
True
>>> print('abcxyz'.endswith(('ab','xy')))
False
>>> print('abcxyz'.endswith(('ab','xy','z')))
True
# tuple中的'z'满足条件

3.find()搜索字符串S中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"。可以指定起始start和结束end的搜索位置。
rfind()则是返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和find()是等价的。

S.find(sub[, start[, end]])
S.rfind(sub[, start[, end]])
>>>print('abcefabc'.find('ef'))
3
>>>print('abcefabc'.find('ef',4))
-1
>>>print('abcefabc'.find('bc'))
7

4.index()和find()一样,唯一不同点在于当找不到子串时,抛出ValueError错误。rindex()同理

S.index(sub[, start[, end]])
S.rindex(sub[, start[, end]])


>>>print('abcefabc'.index('ef',4))
ValueError:substring not found

5.可以使用in操作符来判断字符串S是否包含子串sub,它返回的不是索引位置,而是布尔值。

>>>'xy' in 'abcabc'
False
>>>'ab' in 'abcabc'
True

字符串的替换

1.将字符串中的子串old替换为new字符串,如果给定count,则表示只替换前count个old子串。如果S中搜索不到子串old,则无法替换,直接返回字符串S。

S.replace(old, new[, count])

>>>print('abczxcabc'.replace('abc','ABC'))
ABCzxcABC

>>>print('abczxcabc'.replace('abc','ABC',3))
ABCzxcabc

2.将字符串S中的\t替换为一定数量的空格。默认N=8。注意,expandtabs(8)不是将\t直接替换为8个空格。例如’abc\tab’.expandtabs()会将\t替换为5个空格,因为"abc"占用了3个字符位。

S.expandtabs(N)
>>> print('012\t0123\n01234'.expandtabs(7))
012 0123
01234

3.str.maketrans()生成一个字符一 一映射的table,然后使用translate(table)对字符串S中的每个字符进行映射。
注意:maketrans(x[, y[, z]])中的x和y都是字符串,且长度必须相等。如果maketrans(x[, y[, z]])给定了第三个参数z,则这个参数字符串中的每个字符都会被映射为None。

S.translate(table)
static str.maketrans(x[, y[, z]])

>>>in_str = 'abcdef'
>>>out_str = '123456'

#生成映射表
>>>map_table = str.maketrans(in_str,out_str)

#进行映射
>>>s = 'I hate math'
>>>result=s.translate(map_table)
>>>print(result)
I h1t5 m1th


##含z参数
>>>map_table = str.maketrans(in_str,out_str,'ae')
>>>result=s.translate(map_table)
>>>print(result)
I ht mth

分割

1.搜索字符串S中的子串sep,并从sep处对S进行分割,最后返回一个包含3元素的元组:sep左边的部分是元组的第一个元素,sep自身是元组的二个元素,sep右边是元组的第三个元素。

S.partition(sep)
S.rpartition(sep)#从右边第一个sep进行分割
S.lpartition(sep)#从左边第一个

>>>print('zxcasdqwe'.partition('asd'))
('zxc','asd','qwe')
>>>print('asdzxcasdzxc'lpartition('zxc'))
('asd','zxc','asdzxc')
>>>print('asdzxcasdzxc'rpartition('asd'))
('asdzxc','asd','zxc')

2.根据sep对S进行分割,maxsplit用于指定分割次数,如果不指定maxsplit或者给定值为"-1",则会从做向右搜索并且每遇到sep一次就分割直到搜索完字符串。如果不指定sep或者指定为None,则改变分割算法:以空格为分隔符,且将连续的空白压缩为一个空格。
splitlines()用来专门用来分割换行符。

S.split(sep=None, maxsplit=-1)
S.rsplit(sep=None, maxsplit=-1)
S.splitlines([keepends=True])
>>>'1,2,3'.split(',')
['1','2','3']
>>>'1,2,3'.split(',',1)
['1','2,3']
>>> '<love><><love>'.split('<')
['', 'love>', '>', 'love>']
>>> '<love><><love>'.split('<>')
['<love>', '<love>']
>>>

修剪

S.strip([chars])
S.lstrip([chars])
S.rstrip([chars])

分别是移除左右两边、左边、右边的字符char。如果不指定chars或者指定为None,则默认移除空白(空格、制表符、换行符)。
唯一需要注意的是,chars可以是多个字符序列。在移除时,只要是这个序列中的字符,都会被移除。

猜你喜欢

转载自blog.csdn.net/meiqixiao/article/details/88774488