赞
踩
字符串是 Python 中最常用的数据类型,在 Python 中表示文本的数据类型。字符串(String)是由零个或多个字符组成的有限序列,我们可以使用单引号('')或双引号("")来创建字符串。
字符只是一个符号,例如:字母(A-Z)、数字(0-9)、特殊符号(~!@#¥%…)等。Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
一、字符串定义
在 Python 中,字符串由内置的 str 类型定义。可以使用以下方式定义字符串:
1.1 单引号('')或双引号("")>>> s = 'Hello,world' # 单引号定义
>>> type(s)
>>> s1 = "Hello,Python" # 双引号定义
>>> type(s1)
>>>
在使用时,单引号比双引号更常用。
1.2 字符串可以跨多行,但是每行末尾必须添加反斜杠(\)以转义换行符。>>> s = 'Hello,\
world'
>>> s
'Hello,world'
>>>
1.3 三重引号(''' 或 """)内的字符串可以跨多个文本行。>>> # 三重单引号
>>> s = '''Hello
world'''
>>> s
'Hello\nworld'
>>> # 三重双引号
>>> s = """Hello
Python"""
>>> s
'Hello\nPython'
>>>
注意: 三重引号通常用于表示多行字符串和 docstring。
二、访问字符串
2.1 字符串是字符的有序序列,可以通过其位置(索引)来获取具体的字符。
索引分为两种形式:
正向索引(从左到右):索引从 0 开始,直到 length - 1,可以很方便地访问字符串开头附近的字符。
反向索引(从右到左):索引从 -1 开始,直到 -length,可以很方便地访问字符串末尾附近的字符。
其中,length 为字符串的长度。
字符串索引如下图所示:
例1,使用正向索引来访问指定索引处的字符:>>> s = 'Hello'
>>> s[0] # 第一个字符
'H'
>>> s[4] # 最后一个字符
'o'
>>>
例2,使用负索引(反向索引)从字符串的末尾开始计数,也可以起到同样的效果:>>> s = 'Hello'
>>> s[-5] # 第一个字符
'H'
>>> s[-1] # 最后一个字符
'o'
>>>
注意,试图访问索引范围外的字符会引发 IndexError。索引必须是一个整数,不能使用 float 或其他类型,这将引发 TypeError。# 索引必须在范围内
>>> s = 'Hello'
>>> s[10]
Traceback (most recent call last):
File "", line 1, in
s[10]
IndexError: string index out of range# 索引必须是整数
>>> s = 'Hello'
>>> s[1.5]
Traceback (most recent call last):
File "", line 1, in
s[1.5]
TypeError: string indices must be integers
>>>
2.2 通过索引可以访问字符串中的单个字符,除此之外,可以通过截取操作引用字符串序列(通常是字符串和列表)的子部分。
截取操作的语法格式:[start:stop:step]start(开始索引):第一个索引的值是 0,最后一个是 -1。
stop(结束索引):切片操作符将取到该索引为止,但不包含该索引的值。
step(步长):默认是 1,也就是说,一个接一个切取。如果为 2,则表示隔一取一。步长为正数时,表示从左向右取;如果为负数,表示从右向左取;步长不能为 0。
例,截取字符串>>> s = 'abcdef'
>>> s[2:] # 第2个字符到最后一个字符
'cdef'
>>> s[:] # 所有字符
'abcdef'
>>> s[2:4] # 第2个到第4个字符(不包含第4个)
'cd'
>>> s[2:1000] # 超过最大索引,截取到字符串末尾
'cdef'
>>>
注意:s[:] 形式会忽略开始和结束索引,总是获得一个完整的副本。
和使用索引类似,切片操作也可以使用反向索引:>>> s = 'abcdef'
>>> s[-4:-1] # 第2个字符到最后一个
'cde'
>>> s[:-2] # 开始到第5个字符(不包含第5个)
'abcd'
>>> s[-4:] # 从第3个字符到字符串末尾
'cdef'
>>>
对于任何索引 n,s[:n] + s[n:] == s 是一个整齐的切片,甚至对于负数或超出界限的值也是如此。换一种说法,s[:n] 和 s[n:] 总是将字符串分成两部分,来保存所有的字符。
三、更改或删除字符串
3.1 字符串是不可变的,也就是说,一旦分配了字符串的元素就不能被更改。>>> s = 'Hello'
>>> s[1] = 'a'
Traceback (most recent call last):
File "", line 1, in
s[1] = 'a'
TypeError: 'str' object does not support item assignment
>>>
3.2 无法从字符串中删除字符,但是可以使用关键字 del 完全删除字符串。>>> s = 'Hello'
>>> del s[0] # 从字符串删除字符
Traceback (most recent call last):
File "", line 1, in
del s[0]
TypeError: 'str' object doesn't support item deletion
>>> del s # 完全删除字符串
>>> s
Traceback (most recent call last):
File "", line 1, in
s
NameError: name 's' is not defined
>>>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。