4.1 这样修改改字符串是非法的
所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串,但别忘了字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的。
>>> site = 'http://www.python.org'
>>> site[-3:]
'org'
>>> site[-3:] = 'com'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>>
4.2 常用字符串方法
4.2.1 center
将字符串按照一定的宽度居中。
>>> "Hello python".center(40)
' Hello python '
>>> "Hello python".center(40, "*")
'**************Hello python**************'
>>> "Hello python".center(40, "# ")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: The fill character must be exactly one character long
>>> "Hello python".center(40, "#")
'##############Hello python##############'
>>>
4.2.2 find
方法 find 在字符串中查找子串。如果找到,就返回子串的第一个字符的索引,否则返回 -1 。
>>> 'Wow, Python is the best programming language'.find(Python)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Python' is not defined
>>> 'Wow, Python is the best programming language'.find('Python')
5
>>> 'Wow, Python is the best programming language'.find('c++')
-1
指定查找起始点和终点
>>> string = 'Wow, Python is the best programming language'
>>> string.find('best', 3, 25)
19
>>> string.find('best', 25)
-1
>>>
4.2.3 join
join 是一个非常重要的字符串方法,其作用与 split 相反,用于合并序列的元素。
>>> seq = [1, 2, 3, 4, 5]
>>> sep = '+'
>>> sep.join(seq) # 尝试合并一个数字列表
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: sequence item 0: expected string, int found
>>> seq = ['1', '2', '3', '4', '5']
>>> sep.join(seq) # 合并一个字符串列表
'1+2+3+4+5'
>>> dirs = '', 'usr', 'bin', 'env'
>>> '/'.join(dirs)
'/usr/bin/env'
4.2.4 spilt
其作用与 join 相反,用于将字符串拆分为序列。
>>> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
>>> '/usr/bin/env'.split('/')
['', 'usr', 'bin', 'env']
>>> 'Using the default'.split()
['Using', 'the', 'default'
注意,如果没有指定分隔符,将默认在单个或多个连续的空白字符(空格、制表符、换行符等)处进行拆分。
4.2.5 lower
方法 lower 返回字符串的小写版本。
一个与 lower 相关的方法是 title (参见附录B)。它将字符串转换为词首大写,即所有单
词的首字母都大写,其他字母都小写。然而,它确定单词边界的方式可能导致结果不合理。
"that's all folks".title()
"That'S All, Folks"
另一种方法是使用模块 string 中的函数 capwords 。
>>> import string
>>> string.capwords("that's all, folks")
That's All, Folks"
4.2.6 replace
方法 replace 将指定子串都替换为另一个字符串,并返回替换后的结果。
'This is a test'.replace('is', 'eez')
'Theez eez a test'
4.2.7 判断字符串是否满足特定的条件
很多字符串方法都以 is 打头,如 isspace 、 isdigit 和 isupper ,它们判断字符串是否具有特定
的性质(如包含的字符全为空白、数字或大写)。如果字符串具备特定的性质,这些方法就返回
True ,否则返回 False 。
一下是一些函数示例
isalnum 、 isalpha 、 isdecimal 、 isdigit 、 isidentifier 、 islower 、 isnumeric 、isprintable 、 isspace 、 istitle 、 isupper 。
此处仅仅列出了部分常用的方法,关于Python字符串的处理,还有很多函数。最详细的莫过于Python官方文档
以后在使用使用Python处理字符串方面新的内容,将会在此更新。