一、合并
字符串可以用 +
合并(粘到一起),也可以用 *
重复:
>>> 3 * 'un' + 'ium'
'unununium'
相邻的两个或多个字符串字面值(引号标注的字符)会自动合并:
>>> 'Py' 'thon'
'Python'
拼接分隔开的长字符串时,这个功能特别实用:
>>> text = ('Put several strings within parentheses ' 'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'
这项功能只能用于两个字面值,不能用于变量或表达式。
合并多个变量,或合并变量与字面值,要用 +
:
>>> prefix = 'Py'
>>> prefix + 'thon'
'Python'
二、索引
字符串支持 索引(下标访问),第一个字符的索引是 0。单字符没有专用的类型,就是长度为一的字符串:
>>> word = 'Python'
>>> word[0]
P
>>> word[5]
n
索引还支持负数,用负数索引时,从右边开始计数:
>>>** word[-1]
n
>>> word[-2]
o
>>> word[-6]
P
-0 和 0 一样,因此,负数索引从 -1 开始。
三、切片
字符串还支持切片。索引可以提取单个字符,切片则提取子字符串。
>>> word[0:2]
#下标0和1
Py
>>>** word[2:5] # 下标 2 (包括) 到下标 5 (不包括)
tho
- 切片省略开始索引时,默认值为 0,省略结束索引时,默认为到字符串的结尾。
>>> word[:2] # 默认从0下标开始但不包括下标2
Py
>>>** word[4:] #从下标4开始到最后
on
>>> word[-2:] # 从倒数第二个下标(包括在内)到末尾的字符
on
s [:i] + s [i:] 总是等于 s
:
>>>** word[:2] + word[2:]
Python
>>>= word[:4] + word[4:]
Python
切片索引指向的是字符之间 ,第一个字符的左侧标为 0,最后一个字符的右侧标为 n ,n 是字符串长度。
对于使用非负索引的切片,如果两个索引都不越界,切片长度就是起止索引之差。例如, word[1:3]
的长度是 2。
索引越界会报错:
>>> word[42]
>>> Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
但切片会自动处理越界索引:
>>>** word[4:42]
on
>>> word[42:]
''
- Python 字符串不能修改,是不可变对象。因此,为字符串中某个索引位置赋值会报错:
具有固定值的对象。不可变对象包括数字、字符串和元组。这样的对象不能被改变。如果必须存储一个不同的值,则必须创建新的对象。它们在需要常量哈希值的地方起着重要作用,例如作为字典中的键。
>>> word[0] = 'J '
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
>>> word[2:] = 'py'
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
要生成不同的字符串可以拼接:
>>> 'J' + word[1:]
'Jython'
>>>** word[:2] + 'py'
'Pypy'
内置函数 [len()]
可以返回字符串的长度:
>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34