字符串定义

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)

执行以上程序会输出如下结果:

1
2
3
H
d
W

索引值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
Hello
HelloHello

数字不是正整数,报类型错误。

例如:

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'

转载请注明本网址。