字符串
程序员写代码,经常要对字符串做各种处理,比如字符串的拼接、字符串里面关键信息的提取、格式的转换等等。
Python语言是讲究实用的语言,所以对字符串处理的支持也非常的给力。
字符串的定义
前面的课程,我们已经看到字符串是这样写的
这里字符串是用单引号括起来的
其实字符串还可以 用 双引号 、 单三引号、双三引号,下面的定义都是正确的
其中三引号可以 直接写内容有多行
的字符串。如下
上面是一封信的内容,可以直接放到三引号里面。
大家可以拷贝上面的代码保存到文件中,运行一下看看。
所以,如果字符串的内容有多行,用三引号就特别方便直观。
如果不使用三引号定义字符串, 通常只能在字符串中 使用 \n
转义符表示换行。
就得像这样定义:
字符串内容其实是一样的,但是这样写就非常的麻烦,而且不直观。
大家要注意:
字符串定义前后的引号,只是告诉解释器,引号内部 的内容就是一个字符串对象的内容。
而引号本身并不是字符串的内容。
也就是说,像这样定义的一个字符串
字符串对象的内容是 你好
, 而不是 '你好'
字符串中有引号
如果我们要定义的 字符串内容里面就有引号,怎么办?
比如:字符串 He said : 'OK, I will go now'
字符串内容里面有单引号,那么我们在定义这个字符串的时候,就应该用双引号。如下:
否则,就会出现语法错误,大家可以试试下面的写法
看看会报什么错。
同样的,如果我们要定义的 字符串内容里面就有双引号
比如:字符串 He said : "OK, I will go now"
字符串内容里面有双引号,那么我们在定义这个字符串的时候,就应该用单引号。如下:
如果我们要定义的 字符串内容里面 既有双引号,也有单引号
比如:字符串 He said : 'OK, "I will go now"
那么我们在定义这个字符串的时候,就应该用三引号。如下:
字符串拼接
拼接是字符串常见的操作,可以用加号 把两个字符串连接起来,产生一个新的字符串,像这样
运行结果如下
当然,还可以有更多的拼接,像这样
myFavorit = '我最爱的运动有:'
sport1 = '足球'
sport2 = '蓝球'
print( myFavorit + sport1 + '---' + myFavorit + sport2 )
字符串元素索引
大家看看这个字符串
大家从字符串内容就可以看出,里面有5个字符,每个字符都是这个字符串的一个元素。
字符串就是由一个个 元素 --- 字符 组成的。
像这种由一个个 元素依次组成的字符串, Python语言里面,把这种特性的数据称之为 sequence,翻译成中文就是序列。
字符串就是一种序列。
序列里面的元素都是有索引的。 所谓索引就是元素的下标,如下图所示
特别特别要注意的是,字符串元素的索引是从 0 开始,而不是从1 开始。
上面的字符串
刘 这个字符的索引是 0 ,
总 这个字符的索引是 1 ,
你 这个字符的索引是 2 ,
好 这个字符的索引是 3 ,
啊 这个字符的索引是 4 ,
Python可以用索引来获取一个字符串中的某个字符 ,对于这样的一个字符串定义
刘 这个字符可以这样获取 hello[0] , 运行如下代码看看
总 这个字符可以这样获取 hello[1],
你 这个字符可以这样获取 hello[2] ,
好 这个字符可以这样获取 hello[3] ,
啊 这个字符可以这样获取 hello[4] ,
根据这个规则,一个长度为 len 的字符串, 它的最后一个字符的下标是len-1。
如果是这样的一行代码呢?
由于并不存在一个下标索引为5 的元素, 就会报下面这样的错误
而且Python还支持 用负数表示字符串的索引
, 最后一个字符的索引是 -1, 倒数第二个是 -2, 以此类推
所以 ,也可以说,上面的字符串
啊 这个字符的索引是 -1 , 可以这样获取 hello[-1] ,
好 这个字符的索引是 -2 , 可以这样获取 hello[-2] ,
你 这个字符的索引是 -3 , 可以这样获取 hello[-3] ,
总 这个字符的索引是 -4 , 可以这样获取 hello[-4] ,
刘 这个字符的索引是 -5 , 可以这样获取 hello[-5] ,
负数下标有什么用处呢?
比如一个很长的字符串
str1 = 'cHl0aG9uMy52aXAlMjAlRTclOTklQkQlRTYlOUMlODglRTklQkIlOTElRTclQkUlQkQlMjAlRTclODklODglRTYlOUQlODMlRTYlODklODAlRTYlOUMlODk='
要获取最后一个元素,不需要去从前往后数下标, 一直数到最后的位置。
而是可以直接用
就可以了,这样就方便了很多
字符串切片
sequence特性的数据对象 都支持 切片操作
, 字符串是具有sequence特性的,当然也支持切片。
什么是切片, 形象的说,好像用刀切出其中的一部分
比如我要把
这个字符串切出其中你好
这部分内容,
假想我们手里有把刀,要从下面的字符串中切出 你好
,就应该在箭头所示的地方切两刀,就得到 你好
这个 子字符串了
那么我们看看这两刀 对应的索引的位置。
如果用正数表示就是 2 和 4 , Python中可以用 hello[2:4]
这样的切片表达式来得到该字符串。 大家可以运行如下代码看看
当然也可以用负数表示, 就是 -3 和 -1 , Python中可以用 hello[-3:-1]
这样的切片表达式来得到该字符串。 大家可以运行如下代码看看
字符串切片前面的索引是切片开始的元素的 索引,后面的索引是切片结束的元素的 索引 + 1
省略一个切片索引
如果我们要得到'刘总你好啊' 当中 你好啊 这3个字 又该怎么切片呢?
可以用 hello[2:5]
我们发现,要切出的内容一直到字符串的结尾,这时还可以用 hello[2:]
,后面的索引 空着不写,表示到整个字符串的结束 。
相应的,如果 前面的索引 不写,可以表示 从字符串的开头切片,
比如 hello[:2]
,就是切出 刘总 这两个字
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
获取字符串长度
内置函数 len 可以用来获取字符串的长度,也是获取字符串中字符的个数
比如
返回结果是5,因为var变量对应的字符串长度就是5个字符。