python学习笔记(4)
第六章 字符串操作
1.字符串处理
(1)字符串字
spam='Say hi to Bob\' s mother
面量
python中输入字符串:以单引号开始和结束
(2)双引号:字符串可以用双引号开始和结束,就像单引号一样,使用双引号的好处就是在字符串中可以使用单引号。但是如果字符串中既需要使用单引号又要用到双引号,那就要用到转义字符了
单引号转义字符:\'
双引号专业 \''
制表符 \t
换行符 \n
倒斜杠 \\
在交互环境汇总输入代码:
>>> print('Hello threre! \nHow are you?\n i\' m doing fine') Hello threre! How are you? i' m doing fine
(3)原始字符串:在字符串开始的引号之前加上r,使其成为原始字符串。原始字符串完全忽略字符串中所有的倒斜杠。如:
>>> print(r'That is Carol\'s cat') That is Carol\'s cat
(4)用三重引号的多行字符串
虽然可以用\n转义字符串将换行放入一个字符串,但是使用多行字符串更容易。
多行字符串的起止是3个单引号或者3个双引号,3重引号之间的所有引号、制表符或者换行符,都被认为是字符串的一部分
(5)多行注释
#字符表示的是这一行的注释,但是多行字符串通常用作多行的注释
(6)字符串下标和切片
字符串和列表一样,使用下标和切片。可以将字符串'Hello world!'看成是一个列表,字符串中的每个字符都是一个表项。字符的统计包含了空格和感叹号,所以'Hello world!'有12个字符,H的下标是0,!的下标是11
>>> spam='Hello world!' >>> spam[0] 'H' >>> spam[4] 'o' >>> spam[-1] '!' >>> spam[0:5] 'Hello' >>> spam[6:] 'world!'
如果指定一个下标,将得到字符串在这个地方的字符;切片是一个下标和另外一个下标之间的范围,开始下标包含在内,结束下标不包含
(7)字符串的in和not in 操作符
用in或者not in 连接两个字符串的表达式,将求值为布尔值为True或者False。在交互式环境中可以表示
>>> 'Hello' in 'Hello World' True >>> 'World' in 'Hello' False >>> 'World' in 'Hello World' True >>> '' in 'spam' True >>> 'cats' not in 'cats and dogs' False
2.有用的字符串方法
(1)字符串方法uppper()、lower()、isupper()和islower()
upper()和lower()字符串方法返回一个新的字符串,其中原来字符串的所有字母都被相应的转换为大写或者小写。在字符串中的非字母部分保持不变。
>>> spam='Hello World!' >>> spam=spam.upper() >>> spam 'HELLO WORLD!' >>> spam=spam.lower() >>> spam 'hello world!'
这些方法并没有改变字符串本身,而是返回一个新的字符串。如果要改变原来的字符串,就必须在该字符串上调用upper()或者lower(),然后将这个心字符串赋给保存原来字符串的变量。这就是为什么必须使用spam=spam.upper()才能改变spam中的字符串,而不是spam.upper()
(2)isX字符串方法
除了islower()和isupper(),还有几个字符串,他们的名字以is开始的。这些字符串是返回一个布尔值的,描述了一个字符串的特点。
isalpha()返回True,如果字符串中只包含字母,并且非空;
isalnum()返回True,如果字符串只包含字母和数字,并且为非空
isdecimal()返回True,如果字符串只包含数字字符,并且非空
isspace()返回True,如果字符串只包含空格,制表符和换行,并且非空;
istitle()返回True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词
交互式环境中代码如下
'hello world!' >>> 'hello'.isalpha() True >>> 'hello123'.isalpha() False >>> 'hello123'.isalnum() True >>> 'hello'.isalnum() True >>> '123'.isdecimal() True >>> ' '.isspace() True >>> 'This Is Title Case'.istitle() True >>> 'This Is Title Case 123'.istitle() True
(3)字符串方法startwith()和endwith()
如果他们所调用的字符串以该方法传入的字符串开始或者结束,startwith()和endwith()方法就会返回True
>>> 'Hello world!'.startwith('Hello') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'str' object has no attribute 'startwith' >>> 'Hello world!'.startswith('Hello') True >>> 'Hello world!'.endswith('world') False >>> 'Hello world!'.endswith('world!') True
(4)字符串方法join()和split()
join()方法在一个字符串上进行调用,参数是一个字符串列表,返回一个字符串,返回的字符串由传入的列表中每个字符串连接而成
这个地方注意调用join()方法的字符串,被插入到列表参数中的每个字符串的中间
>>> ','.join(['cats','rats','bats']) 'cats,rats,bats' >>> ' '.join(['My','name','is','Stone']) 'My name is Stone' >>> 'ABC'.join(['My','name','is','Stone']) 'MyABCnameABCisABCStone'
注意:join()方法是针对一个字符串而调用的额,并且传入一个列表值;split()方法刚还相反:针对一个字符串进行调用,返回的是一个字符串的列表
join()方法是针对一个字符串而调用的额,并且传入一个列表值;split()方法刚还相反:针对一个字符串进行调用,返回的是一个字符串的列表
(5)用rjust()、ljust()和center()方法对齐文本
rjust()和ljust()字符串方法返回调用他们的字符串的填充版本,通过插入空格来对齐文本,这两个方法第一个参数是整数的长度,用于对齐字符串
>>> 'Hello'.rjust(10) #希个字符,所以坐标会加上5个空格,希望右对齐,将'Hello'放在一个长度为10的字符串中,‘Hello’有5个空格,得到10个字符的字符串,实现‘Hello’的右对齐 ' Hello >>> 'Hello'.rjust(20) ' Hello' >>> 'Hello World'.rjust(20) ' Hello World' >>> 'Hello'.ljust(10) 'Hello '
rjust()和ljust()方法的第二个可选参数将指定一个填充字符串,来取代空格。
>>> 'Hello'.rjust(20,'*') '***************Hello' >>> 'Hello'.ljust(20,'-') 'Hello---------------'
文本居中对齐center()
>>> 'Hello'.center(20,'-') '-------Hello--------'
(6)用strip()、rstrip()和lstrip()删除空白字符
有时候希望删除字符串左边、右边或者两边的空白字符(空格、制表符和换行符)
strip()字符串将返回一个新的字符串,它的开头或者末尾都没有空白字符
lstrip()和rstrip()方法相应的删除左边或者右边你的空白字符
>>> spam=' Hello Wworld' >>> spam.strip() 'Hello Wworld' >>> spam ' Hello Wworld' >>> spam.lstrip() 'Hello Wworld' >>> spam ' Hello Wworld' >>> spam.rstrip() ' Hello Wworld'