字符串类型在Python中是十分重要的类型,他一般用引号中间添加字符的形式表达,不同于其他语言的是,Python中双引号(” “)与单引号(’ ‘)是不予区分的。都可以用来表示字符串
创建、赋值和访问
1. 两种创建方式
(1) 直接赋值
s = "abcdef"
(2) 通过str()
函数
str()函数的作用,相当于是通过传入的参数,生成一个string型的对象,这个传入的参数可能是整型,浮点型,也能是列表,元组,字典等。
s = str(21) # >>> "21"
s = str(12.3) # >>> "12.3"
s = str([1, 2, 3]) # >>> "[1, 2, 3]"
需要注意的是,“传入的是什么,得到的就是什么”比如我们传一个列表进去的话,得到的字符串的第一个字符可不是列表的第一个元素,而是"["
,同理 ,
也被看做是字符串的一部分
2. 访问字符串
(1) 访问单个字符
s = "1234567"
print(s[1]) # >>> "2"
print(s[-1]) # >>> "7"
print(s[-7]) # >>> "1"
字符串当然也是序列,所以也满足每一个元素(也就是其中的每一个字符)都对应一个索引,索引的设计与其他语言一样,从0开始。
此外,Python还提供了“负索引”,就是令最后一个元素的索引为-1,倒数第二个元素的索引为-2,以此类推,第一个元素的索引就是-n(其中,n为序列的长度)
(2) 访问切片
s = "1234567"
print(s[1:4]) # >>> "234"
切片是Python中非常有特色的语法,当然,切片应用的对象是序列(字符串,列表,元组),他可以用来非常方便的表示序列的一部分。切片有3个参数控制,他的形式可以如下表示:
[begin: end: step]
中间由 :
隔开,begin
表示要得到的序列的起始位置,并且包含这个位置,而 end
则表示要得到序列的结束位置,但是不能包含这个位置的元素。例如:
s = "1234567"
s1 = s[2:5] # >>> 取的是s中第2个位置开始,一直到第4个位置的数,也就是"345"
如果我们不明确给出begin和end的相应参数,那么,begin会默认为0,end会默认为n(序列长度),比如:
s = "1234567"
s1 = s[:5] # >>> s1 = "12345"
s2 = s[2:] # >>> s2 = "34567"
s3 = s[:] # >>> 复制了整个s
而切片的最后一个参数step则表示“步长”,比如:
s = "1234567"
s1 = s[1:6:2] # >>> 从第1个位置开始,直到第5个位置结束,每次“跳”2步,得到"246"
可以理解为,每取一个元素后,向后“跳”的步数为step,比如上面的例子就是跳了2步。但是step这个参数不是一定要给出的,他默认值为1,而且当使用默认值1时,step之前的那个 :
如果没有特殊的需求,也是可以省略不写的。
(3) 负切片
有一种比较特殊的切片使用方式,那就是“负切片”,通俗地讲,就是令step为负数的切片,既然我们上面已经说过Python提供“负索引”,那么根据相同的道理,负切片自然就是从后开始,每次向前跳相应的步数,比如: