查看原文
其他

社科大数据平台Python学习系列 | Python 字符串操作(上)

快点关注→ 数据Seminar 2023-02-21

目录

一、前言

二、字符串的运算

1. 字符串连接

2. 字符串复制

3. 字符串成员运算

三、字符串转义符

四、字符串切片

1. 字符串索引

2. 六大案例

五、总结

本文共3927个字,阅读大约需要12分钟,欢迎指正!

Part1前言

上期文章,我们详细介绍了Python 基本数据类型,包括数字和字符串,文中着重介绍了 Python 中字符串的表示方法。

事实上,Python 中字符串的使用极其频繁,无论是微观数据,还是统计数据,大多数有效信息都被存储为字符型,即使是一部分数据是数字,在处理过程中可能也要将其转为字符型。所以字符串处理手段十分重要,本期文章我们就来介绍一下 Python 字符串的基本操作

Part2字符串的运算

类似于数字之间的运算,字符串也存在运算操作。不过常用的字符串运算方式非常少,只有连接(加法)、复制(乘法)和成员运算。

1字符串连接

字符串的连接运算只存在于字符串与字符串之间,即字符串与字符串连接(字符串与数字或其他类型之间无法进行连接运算)。进行连接运算时,使用加号 + 将两个字符串连接起来,所以我们也可以称之为字符串相加。示例代码如下:

'Python ' + 'is fine'
# 得到:'Python is fine'

'我的' + '爱好' + '是学习'
# 得到:'我的爱好是学习'

2字符串复制

字符串的复制运算只存在于字符串与整数之间,例如 'Python' * n,表示 n 个 'Python' 连接在一起。如果乘数 n 是负整数或者 0,运算的结果将会是空字符串 ''。空字符串 '' 乘以任何整数都将得到其本身——即空字符串。示例代码如下:

'Python' * 3
# 得到:'PythonPythonPython'

'Python' * 0
# 得到:''

'Python' * -2
# 得到:''

'' * 100
# 得到:''

3字符串成员运算

成员运算是 Python 字符串中使用最频繁的运算方式,主要功能是判断一个字符串是否出现在另一个字符串中,共有有两种运算方式 in 和 not in。运算的结果不是字符串,而是布尔值(True 或者 False),表示一种真与假,或者成立与不成立的状态。这里不再用过多语言来解释了,因为看代码会更便于理解:

'我爱' in '我爱学习'
# 得到:True  说明表达式成立

'我爱' not in '我爱学习'
# 得到:False  说明表达式不成立

'我学习' in '我爱学习'
# 得到:False  说明表达式不成立

'我学习' not in '我爱学习'
# 得到:True  说明表达式成立

'' in '我爱学习'
# 得到:True   空字符串包含在任意字串中, 包括空字符串本身

'' not in ''
# 得到:False

最后,以上三种运算的优先级为:复制运算 > 连接运算 > 成员运算

Part3字符串转义符

在 Python 中经常会使用字符串存储一些奇怪的字符,比如换行符、制表符等常规字符串不方便表示的字符;或者需要保留字符原本的含义。此时需要用反斜杠 \ 来转义字符,以便于表示特殊字符或字符本身。其中常用的转义字符如下表所示:

转义符的使用方式代码如下图所示:

Part4字符串切片

在 Python 中可以使用切片截取字符串中的一部分字符。比方说,我需要截取字符串"ABCDEFG"中的第 2 ~ 6 的字符,即 "BCDEF",这时我们就需要使用字符串切片(slice)来截取字符串的某一部分。

1字符串索引

字符串切片是完全依赖于字符串索引的,所以介绍字符串切片之前需要先介绍字符串索引。索引是序列类数据的一种重要属性,在 Python 的学习过程中,认识并掌握索引是一个具有重大意义的事情。下面我们正式介绍字符串索引。

字符串索引,用白话来说,就是字符串中每一个字符(包括空格,但不包括转义符)的顺序标记。类似于我们日常所说的序号。在 Python 中存在两种索引方式。一种是正序索引,另一种是逆序索引。两种索引共同作用在同一个序列上(字符串也是一种序列)。举例图解,字符串"r.qiyandata.com"的索引如下图所示

上图中上面一行蓝色数字是字符串 "r.qiyandata.com" 的正序索引,正序索引自左向右(自前向后)从 0 开始递增,正序索引值为连续的非负整数,且不含重复值。下面一行蓝色数字是逆序索引,逆序索引自右向左(自后向前)从 -1 开始递减,逆序索引的值为连续的负整数,也不含重复值。

了解字符串的索引之后,就可以继续学习字符串切片了。我们先使用 Python 定义一个字符串,代码如下:

S = "r.qiyandata.com"    # 将字符串 "r.qiyandata.com" 赋值给变量 S
print(S)  # 输出变量 S
# 输出:r.qiyandata.com

在字符串中可以通过方括号[]来获取相应索引位置或范围内的字符,这就是字符串切片。切片共有三个参数,三个参数分别是 start、stop 以及 step,分别表示起始索引,终止索引和步长。三者使用冒号:分隔开。表示从左向右截取字符串中索引从 start(包含 start 本身,默认值为 0)到 stop (不包含 stop 本身,默认值为字符串长度,如果使用了默认值,则包含字符串最后一个字符),步长为 step (默认值为 1)的字符。

[start:stop:step]

重点在于从 start 到 stop 是一个左闭右开区间[start,stop) 。理解上面这段话需要一点时间,笔者下面使用代码帮助你体会其中的含义。

2案例

案例一

需要截取 S("r.qiyandata.com") 中的 "qiyandata"。示意图和切片代码截图如下:

从上面的代码中已经可以看出索引的使用非常灵活。我们注意到,上面四种切片方式使用的步长均为 1(step 的默认值就是 1),这种情况下我们可以直接省略 step 参数。仅使用 start 和 stop 即可。代码如下图所示:

案例二

截取字符串 S 中的前 7 个字符,示意图和切片代码截图如下:

观察上面的示意图可以发现,无论使用正序索引还是逆序索引,start 参数指向的都是 S 中索引为 0 的字符 r,也就是说 start 的值(0、-15)全部等价于默认值 0。此时我们可以省略 start 参数,让其使用默认值。省略 start 参数后的代码如下图所示:

这里需要注意,不同于省略步长 step,省略 start 时,start 与 stop 之间的冒号不能省略,只有保留冒号,系统才知道你省略的是 start。否则 Python 无法判断你的意图。

案例三

需要截取字符串 S 中的最后四个字符,示意图和切片代码截图如下:

以上代码中有几处需要注意的地方。

  • 首先,第一行代码中,正序索引 15 实际上是不存在的,但是由于我们的目的是获取最后 4 的字符,所以这里的 stop 只要是大于最后一个字符 m 的正序索引 14 的正整数即可。比如:

    同理,当需要获取字符串的前几个字符时,将 start 设置为小于等于(因为是左闭右开)首个字符 r 的逆序索引 -15 的负整数即可,代码如下图所示:

  • 其次,由于 [start,stop) 为左闭右开区间,即不包含索引为 stop 的字符,所以切片代码 S[-4:-1] 并没有获取到最后四个字符中最后一个字符 m。后面我们使用切片代码 S[-4:] 省略了 stop 参数,此时最后一个字符也被包含其中,也就达到了我们的目的。

案例四

从字符串 S 的首个字符开始,直到最后一个字符结束,每隔一个字符获取一个字符。示意图和切片代码如下:

可如果步长 step 设置为负数 -1,会发生什么呢?继续往下看

案例五

将字符串 S 反转,通俗地说,就是把 "r.qiyandata.com" 倒着写。这次没有示意图了,代码如下:

需要注意的是,当步长 step 设置为负数时,字符产切片是从右向左(从后向前)来截取字符串的。此时切片将会从后向前从 start 开始(包含 start)到 stop 结束(不包含 stop 本身),并配合步长 step 来完成切片。比如我想要截取 S 的最后四个字符并要求字符顺序是反过来的,示意图如下:

那么我们可以使用下图所示代码完成操作:

案例六

需要截取字符串 S 中的某一个字符,比如说第 6 个字符(由于索引从 0 开始,第六个字符的索引就是 5)。

按照上面的逻辑,我们当然可以使用下面的代码来处理:

不过上面这种方式太麻烦了,我们直接使用所需字符的索引即可,代码如下图所示:

以上六个分别介绍了 Python 中字符串的切片操作。追求实用性的读者可以只看案例一、案例二、案例三和案例六,会更好理解一些。

Part5结束语

本期文章我们详细介绍了 Python 中字符串的三种运算、Python 序列的索引以及通过索引实现的字符串切片。这是在学习 Python 的过程中首次接触到索引的一节,重要性不言而喻。初学字符串切片时会觉得比较麻烦,记不住,这是正常的现象,因为这是一个难点,也是一个重点。

下期文章我们将继续介绍 Python 字符串的其他操作,内容相对本期而言会简单不少,也会更加有趣。

我们将在数据治理板块中推出一系列原创推文,帮助读者搭建一个完整的社科研究数据治理软硬件体系。该板块将涉及以下几个模块(点击标题即可跳转至相应合集):
  1. 计算机基础知识
  2. 编程基础
  3. 数据采集
  4. 数据存储
  5. 数据清洗
  6. 数据实验室搭建
  7. 数据治理特别篇



星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧

数据Seminar推荐搜索       基本无害数据清理

往期推荐


社科大数据平台python学习系列 |Python 基本数据类型

企业数据库匹配系列(五)|海关库与工企库匹配报告

社科大数据平台python学习系列 |学习 Python 第一步——环境安装与配置

企业数据库匹配系列(四)|海关库与工商库匹配报告(上)

企业数据库匹配系列(四)|海关库与工商库匹配报告(下)





数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


文 | 两米哥


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存