04-字符串索引和切片
6.1.2 字符串索引和切片
字符串像列表一样,使用索引和切片。可以将字符串'Hello, world!'看成一个列表,字符串中的每个字符都是一个项,有对应的索引:
' H e l l o , w o r l d ! '
0 1 2 3 4 5 6 7 8 9 10 11 12
字符计数包含了空格和感叹号,所以 'Hello, world!'
有13个字符,H的索引是0,!的索引是12。
在交互式环境中输入以下代码:
>>> spam = 'Hello, world!'
>>> spam[0]
'H'
>>> spam[4]
'o'
>>> spam[-1]
'!'
>>> spam[0:5]
'Hello'
>>> spam[:5]
'Hello'
>>> spam[7:]
'world!'
如果指定一个索引,你将得到字符串在该处的字符。如果用一个索引和另一个索引指定一个范围,开始索引将被包含,结束索引则不包含。因此,如果 spam
变量是 'Hello world!',那么spam[0:5]
就是 'Hello'
。通过 spam[0:5]
得到的子字符串将包含 spam[0]
到 spam[4]
的全部内容,而不包含索引5处的逗号和索引6处的空格。这类似于 range(5)for
循环到 5
(但不包括 5
)。
请注意,字符串切片并没有修改原来的字符串。可以从一个变量中获取切片,记录在另一个变量中。在交互式环境中输入以下代码:
>>> spam = 'Hello, world!'
>>> fizz = spam[0:5]
>>> fizz
'Hello'
通过切片并将结果子字符串保存在另一个变量中,就可以同时拥有完整的字符串和子字符串,便于快速、简单地访问数据。