Python基础学习之字符串(2)
字符串常用方法
1、s.capitalize()
描述:返回字符串s的副本,并将首字符变为大写。
示例:
>>> s='yesterday when I was Young!'
>>> print(s.capitalize)
<built-in method capitalize of str object at 0x013B31A8>
>>> print(s.capitalize())
Yesterday when i was young!
>>> s='1234,hello!WORLD!' #首字符为数字
>>> print(s.capitalize())
1234,hello!world!
>>> #首字符变为大写,其它字符是大写变为小写
>>> #若首字符非字母,则首字符不变化;
2、s.find(t,start,end)
描述:返回t在s中(或在s的start:end切片中)的最左位置,如果没有找到,就返回 -1;使用str.rfind()则可以发现相应的最右边位置;
find方法可以在一个较长的字符串中查找子字符串,它返回子串所在位置的最左端索引。如果没有找到则返回-1;
示例:
>>> title='For man is man and master of his fate'
>>> title.find('man')
4
>>> title.find('fate')
33
>>> title.find('for')
-1
>>>
字符串的find方法并不返回布尔值。如果返回的是0,则证明在索引0位置找到了子串。
find方法还可以接受可选的起始点和结束点参数:
示例:
>>> s='*** A young idler,an old beggar!!! ***'
>>> s.find('***')
0
>>> s.find('***',1)#只提供起始点
35
>>> s.find('!!!')
31
>>> s.find('!!!',0,33)#提供起始点和结束点
-1
>>> s.find('!!!',10,35)
31
>>> s.find('!!!',31,34)
31
>>> s.find('!!!',31,33)#注意,由起始和终止指定的范围(第二个和第三个参数)包含第一个索引,但不包含第二个索引;
-1
>>>
3、s.join(seq)
描述:返回序列seq中每个项连接起来后的结果,并以s(可以为空)在每两项之间分隔;
join方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素:
示例:
>>> seq=[99,'name',1,233,7,'=','ok'] >>> seq [99, 'name', 1, 233, 7, '=', 'ok'] >>> s='+'>>> s.join(seq)# 连接有数字元素的列表 Traceback (most recent call last): File "<pyshell#26>", line 1, in <module> s.join(seq)# 连接有数字元素的列表 TypeError: sequence item 0: expected str instance, int found >>> seq=['99','name','1','233','7','=','ok'] >>> s.join(seq)#连接字符串列表 '99+name+1+233+7+=+ok' >>> s1='' >>> s1.join(seq) '99name12337=ok' >>> s2=' ' >>> s2.join(seq) '99 name 1 233 7 = ok' >>> s3='Email:justzhi@163.com' >>> s3.join(seq) '99Email:justzhi@163.comnameEmail:justzhi@163.com1Email:justzhi@163.com233Email:justzhi@163.com7Email:justzhi@163.com=Email:justzhi@163.comok' >>> dirs='','usr','bin','env' >>> dirs ('', 'usr', 'bin', 'env') >>> '/'.join(dris) Traceback (most recent call last): File "<pyshell#37>", line 1, in <module> '/'.join(dris) NameError: name 'dris' is not defined >>> '/'.join(dirs) '/usr/bin/env' >>> '\'.join(dirs) SyntaxError: EOL while scanning string literal
可以看到,需要添加的队列元素都必须是字符串。
4、s.lower()
描述:将s中的字符变为小写
如想想要编写“不区分大小写”的代码的话,那么这个方法就派上用场了。如想要在列表中查找一个用户名是否存在(不区分大小写),解决方法就是存储和搜索时把所有名字都转换为小写。
示例:
>>> 'ABCDEFGhijKmLnpXXz'.lower()
'abcdefghijkmlnpxxz'
>>> name='JustZhi'
>>> names=['justzhi','smith','jones']
>>> if name.lower() in names: print('Found it!')
Found it!
>>>
5、s.replace(t,u,n)
返回s的一个副本,其中每个(或最多n个,如果给定)字符串t使用u替换;
>>> s='no pain,no gain.' >>> s.replace('no','No',1) 'No pain,no gain.' >>> s.replace('no','No') 'No pain,No gain.' >>> s.replace('ain','ain!',2) 'no pain!,no gain!.' >>> s.replace('.','!') 'no pain,no gain!' >>>
6、s.split(t,n)
返回一个字符串列表,要求在字符串t处至多分割n次,如果没有给定n,就分割尽可能多次,如果t没有给定,就在空白处分割。
示例:
>>> s='23+77+23+56+100' >>> s.split('+') ['23', '77', '23', '56', '100'] >>> s.split('+',2) ['23', '77', '23+56+100'] >>> s.rsplit('+',2) ['23+77+23', '56', '100'] >>> dirs='usr/bin/env' >>> dirs 'usr/bin/env' >>> dirs.split('/') ['usr', 'bin', 'env'] >>> dirs.split() ['usr/bin/env'] >>> dirs.split('/',2) ['usr', 'bin', 'env'] >>>
7、s.strip(chars)
返回s的一个副本,并将开始处与结尾处的空白字符(或字符串chars中的字符)移除,str.lstrip()仅剥离起始处的相应字符,str.rstrip()只剥离结尾下的相应字符。
strip方法返回去除两侧(不包括内部)空格的字符串:
>>> s=' internal whitespace is kept '
>>> s.strip()
'internal whitespace is kept'
>>> #也可以指定需要去除的字符,将它们列为参数即可。
>>> '------ Hello! everyone!-------'.strip('-')
' Hello! everyone!'
>>> '------ Hello! everyone!-------'.strip('-!')
' Hello! everyone'
>>> '------ Hello! everyone!-------'.strip('one-!')
' Hello! every'
>>> '------ Hello! everyone!-------'.strip('-e!')
' Hello! everyon'
>>>
8、s.isdigit()
如果s非空,并且每个字符都是一个ASCII数字,就返回True
示例:
>>> '344'.isdigit() True >>> '5ccc'.isdigit() False >>> '8 '.isdigit() False >>>
实例:判断用户输入年龄是否合法
while True: age=input('请输入你的年龄:') if age.isdigit()==True: print('你的年龄是:%s'%age) break else : print('你输入的年龄不合法!请重新输入!')
运行测试结果:
请输入你的年龄:4q 你输入的年龄不合法!请重新输入! 请输入你的年龄: 你输入的年龄不合法!请重新输入! 请输入你的年龄:00000123q 你输入的年龄不合法!请重新输入! 请输入你的年龄:qqqq 你输入的年龄不合法!请重新输入! 请输入你的年龄:135903956987 你的年龄是:135903956987 >>>
类似方法:
s.isalnum() 如果s非空,并且其中的每个字符都是字母数字的,就返回True。
s.isalpha() 如果s非空,并且其中的每个字符都是字母的,就返回True.
s.isspace() 如果s非空,并且其中的每个字符都是空白字符,就返回True.
s.isdentifier() 如果s非空,并且是一个有效的标识符,就返回True.