python字符串(str)概念

字符串是python当中最常用的数据类型,我们用它来处理文本内容,字符串是字符的有序集合,可以使用一对单引号或一对双引号,或者3对双引号来创建,python字符串的索引有正向索引和反向索引之分,通过索引你可以随机访问字符串

1. 字符串的创建

字符串是python当中最常用的数据类型,我们用它来处理文本内容,下面的代码演示了3中创建字符串的方法

str_1 = 'python'
str_2 = "python"
str_3 = """python"""

print(str_1, type(str_1))
print(str_2, type(str_2))
print(str_3, type(str_3))

在pycharm新建一个脚本,具体方法参考第一章《安装配置pycharm》,本教程如果没有要求在交互式解释器里写代码,那么默认就是在pycharm里编写代码。

上面的代码里,我分别用单引号,双引号,3对双引号创建一个字符串,使用print函数输出这3个变量的内容以及他们的类型,实际输出结果为

python <class 'str'>
python <class 'str'>
python <class 'str'>

这3种创建字符串的方法,常用的是前两种,在使用print函数时,多个数据可以用逗号分隔。

多个字符串可以使用 + 连接在一起,生成新的字符串,在交互式解释器中跟随我操作

>>> a = 'I'
>>> b = 'like'
>>> c = 'python'
>>> d = a + ' ' + b + ' ' + c
>>> d
'I like python'
>>> len(d)
13

我定义了三个变量,其类型都是字符串,最后使用 + 将他们连接在一起,在连接时,为了不让单词紧挨着,我在中间加入了' ',也是一个字符串,里面的内容是空格。

使用内置函数len(),可以获取字符串的长度,你又学会了一个新的内置函数。

2. 索引的概念

这是你在学习编程语言时接触到第一个十分重要的专业概念,后面学习列表时,你还会用到它,不理解索引,就没办法学习切片。

python中,字符串是字符的有序集合。这里,你主要关注有序二字。

'python'
'443'
'*&^%$'

第一个字符串里有5个字母,第二个字符串里有3个数字,第三个字符串里有5个字符,在编程语言里,这些都统称为字符,所以,字符串是字符的集合。

那么有序是怎么体现的呢?有序意味着,每一个字符都有自己的位置,专业术语叫索引,比如字符串'python', 我现在问你,这个字符串的第3个字符是什么,你会回答说是字符t,从左向右数,的确是t, 这个就是索引。

但与所熟悉的计数方式不同,编程语言里,索引都是从0开始的,因此,t在字符串python中的索引是2

python字符串正向索引与反向索引

不仅如此,python还支持反向索引,t的反向索引是-4。

你可以通过索引来访问字符串里的某个字符,在编辑器里跟随我操作

>>> a = 'python'
>>> a[0]
'p'
>>> a[-2]
'o'
>>> a[1:3]
'yt'
>>> a[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

根据索引访问字符串里的某个字符时,需要使用一对中括号[],在其中填写索引,如果索引超出了范围,就会引发IndexError,这是初学者非常容易犯的错误。

a[1:3],表示范围索引1到索引3这个范围内的字符,得到的结果是'yt', 这就是切片操作,关于切片操作会有专门的文章讲解。

3. 字符串的运算

对于字符串,有以下运算

操作符 描述
+ 字符串连接
* 重复字符串
[] 通过索引访问指定索引的字符
[ : ] 切片操作,截取字符串指定范围
in 成员运算符 - 如果字符串中包含给定的字符返回 True
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True
% 格式字符串

字符串连接操作,在介绍字符串概念时已经有过讲解,下面在交互式解释器里跟随我操作,学习这些操作符

>>> a = 'py'
>>> b = 'python'
>>> a + b
'pypython'
>>> a*3
'pypypy'
>>> b[3]
'h'
>>> b[0:2]
'py'
>>> a in b
True
>>> b not in b
False

关于 % ,格式化字符串,会有专门的文章进行讲解。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案