字符串定义
python中的文本数据是用字符串处理的。字符串是Unicode码位的不可变序列。
字符串文本的编写方式多种多样:可以用单引号 ‘ 或双引号 “ 括起来,也可以用三个单引号或双引号(通常称为三重引号),'''
和"""
。
例如:
1
2
3
4
5
6
7
8
9
|
a = 'string a' # 单引号'
b = "string b" # 双引号"
c = '''string c''' # 三重单引号'''
d = """string d""" # 三重双引号"""
print(a)
print(b)
print(c)
print(d)
|
执行以上程序会输出如下结果:
1
2
3
4
|
string a
string b
string c
string d
|
单引号 ‘ 里面可以包含双引号 “ 。
双引号 “ 里面可以包含单引号 ‘ 。
三重引号'''
里面可以包含双引号”。
三重引号"""
里面可以包含单引号’。
例如:
1
2
3
4
5
6
7
8
9
|
a = 'string "a"'
b = "string 'b'"
c = '''string "c"'''
d = """string 'd'"""
print(a)
print(b)
print(c)
print(d)
|
执行以上程序会输出如下结果:
1
2
3
4
|
string "a"
string 'b'
string "c"
string 'd'
|
与单引号 ‘ ,双引号 “ 不同,三重引号还可以表示多行内容。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
multi_Line1 = """
line 1
line 2
line 3
"""
multi_Line2 = '''
line 1
line 2
line 3
'''
print(multi_Line1)
print(multi_Line2)
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
|
line 1
line 2
line 3
line 1
line 2
line 3
|
注意: 单引号里面是不能包含单引号,双引号里面不能包含双引号。否则,抛出异常报错。
例如,单引号错误。
1
2
3
4
5
6
|
a = 'string 'a''
File "main.py", line 1
a = 'string 'a''
^
SyntaxError: invalid syntax
|
例如,双引号错误。
1
2
3
4
5
6
|
b = "string "bb""
File "main.py", line 1
b = "string "bb""
^
SyntaxError: invalid syntax
|
转义字符串
通过上面的学习,我们知道单引号里面是不能包含单引号,双引号里面不能包含双引号。如果想在字符串里面显示单引号或双引号等特殊字符字符,应该是怎么实现呢?反斜杠(\)字符。
反斜杠(\)字符用于转义其他具有特殊含义的字符,如换行符、反斜杠本身或引号字符。
例如:
1
2
3
4
5
6
7
8
|
a = 'It\'s a string.'
print(a) # 转义单引号,输出 It's a string.
a = 'string \'a\''
print(a) # 转义单引号,输出 string 'a'
b = "string \"bb\""
print(b) # 转义双引号,输出 输出 string "bb"
|
可识别的转义序列为:
转义对象 |
描述 |
\newline |
忽略反斜杠和换行符 |
\\ |
反斜杠 (\) |
\‘ |
单引号(‘) |
\“ |
双引号(“) |
\a |
ASCII响铃(BEL) |
\b |
ASCII退格(BS) |
\f |
ASCII Formfeed(FF) |
\n |
ASCII 换行(LF) |
\r |
ASCII 回车(CR) |
\t |
ASCII 水平tab(TAB) |
\v |
ASCII Vertical Tab(VT) |
\ooo |
八进制值为ooo的字符 |
\xhh |
十六进制值为hh的字符 |
原始字符串
字符串以字母“r”或“R”作为前缀,这样的字符串称为原始字符串,并将反斜杠视为普通文本字符,不进行转义。
例如:
1
2
3
4
5
6
7
|
a = 'It\'s a string.'
b = R'It\'s a string.'
c = r'It\'s a string.'
print(a)
print(b)
print(c)
|
执行以上程序会输出如下结果:
1
2
3
|
It's a string.
It\'s a string.
It\'s a string.
|
索引操作
按照索引访问字符串。索引操作格式如下:
字符串[i]
i是索引值。i是正数,从左向右计算,第一个是0,第二个是1,依次类推。i是负数,从右向左计算,第一个是-1,第二个是-2,依次类推。
例如:
1
2
3
4
5
6
7
|
a = "Hello World"
b = a[0] # i是正数,从左向右计算,0表示是第一个。
c = a[-1] # i是负数,从右向左计算。-1表示第一个。
d = a[6]
print(b)
print(c)
print(d)
|
执行以上程序会输出如下结果:
索引值i超出字符串长度时,报错,抛出IndexError异常。
例如:
1
2
3
|
a = "Hello"
b = a[10]
print(b)
|
执行以上程序会输出如下结果:
1
2
3
4
|
Traceback (most recent call last):
File "main.py", line 2, in <module>
b = a[10]
IndexError: string index out of range
|
字符串是不可改变的对象,以下赋值操作也会报错,抛出TypeError异常。
例如:
1
2
|
a = "Hello"
a[0] = "h"
|
执行以上程序会输出如下结果:
1
2
3
4
|
Traceback (most recent call last):
File "main.py", line 2, in <module>
a[0] = "h"
TypeError: 'str' object does not support item assignment
|
切片
什么是切片(slice)?
使用下标来访问序列对象并获取值的方式,就是切片。切片的形式是中括号内,用冒号隔开的数字。数字可以省略。例如,variable_name[1:3:5]
中的[1:3:5]就是切片。
切片和索引的区别
索引的形式是个整数数字。
切片的形式是中括号。里面包含用冒号隔开的整数数字。也可以把中括号内的数字看作是索引。
切片操作
字符串切片操作格式如下:
字符串[start:end]
start,end都是索引值,整数类型。索引值以0为开始值,如果是负数,则从尾部开始。-1为最末尾。
省略start,从0开始。
省略end,则获取剩余所有。
同时省略start和end,则复制当前的字符串。
字符串[start:end]
获取索引值start开始,end结束(不包括end)的范围值。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
a = "Hello World"
a1 = a[0:2] #获取索引值从0到2(不包括2)的字符串,结果是He
a2 = a[6:8] #获取索引值从6到8(不包括8)的字符串,结果是Wo
a3 = a[6:-1] #获取索引值从6到-1(不包括-1)的字符串,结果是Worl
a4 = a[:2] #获取索引值从0到2(不包括2)的字符串,结果是he
a5 = a[6:] #获取索引值从6开始的所有字符串,结果是World
a6 = a[:] #复制当前的字符串Hello World。
print(a1)
print(a2)
print(a3)
print(a4)
print(a5)
print(a6)
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
He
Wo
Worl
He
World
Hello World
|
字符串切片还有第三个参数step。表示步长。格式如下:
字符串[start:end:step]
省略step参数时,默认是1,也就是获取索引从start开始,步长为1,到end结束的值。
例如:
1
2
3
4
5
6
7
8
9
10
|
a = "Hello World"
a1 = a[0:6:2] #获取索引值从0到6(不包括6),步长为2的字符串,结果是Hlo
a2 = a[2:6:2] #获取索引值从2到6(不包括6),步长为2的字符串,结果是lo
a3 = a[::3] #步长为3的字符串,结果是HlWl
a4 = a[0:-1:2] #获取索引值从0到-1(不包括-1),步长为2的字符串,结果是HloWr
print(a1)
print(a2)
print(a3)
print(a4)
|
执行以上程序会输出如下结果:
1
2
3
4
|
Hlo
lo
HlWl
HloWr
|
字符串连接,复制
加号 + 是字符串的连接符, 将左右两侧的字符串连接起来形成新字符串。
实例,字符串连接
1
2
3
4
5
6
7
8
|
a = "Hello"
b = "World"
print(a)
print(b)
c = a + b # 字符串c是新字符串,由a和b连接形成
print(c)
|
执行以上程序会输出如下结果:
1
2
3
|
Hello
World
HelloWorld
|
星号 * 表示复制当前字符串,紧跟的数字为复制的次数。数字必须是正整数。
实例,字符串复制
1
2
3
4
5
|
a = "Hello"
print(a)
b = a * 2
print(b)
|
执行以上程序会输出如下结果:
数字不是正整数,报类型错误。
例如:
1
2
3
4
5
|
a = "Hello"
print(a)
b = a * 2.0
print(b)
|
执行以上程序会输出如下结果:
1
2
3
4
5
|
Hello
Traceback (most recent call last):
File "main.py", line 4, in <module>
b = a * 2.0
TypeError: can't multiply sequence by non-int of type 'float'
|
转载请注明本网址。