Python之字符串精讲(上)

本文介绍了Python中字符串的基本操作,包括使用+拼接字符串,利用len()计算长度,注意编码对字节数的影响,以及如何通过切片截取字符串。此外,还讲解了split()方法进行字符串分割和join()方法合并字符串,这些都是编程中常见的字符串处理技巧。

前言

字符串是所有编程语言在项目开发过程中涉及最多的一个内容。大部分项目的运行结果,都需要以文本的形式展示给客户,曾经有一位久经沙场的老程序员说过一句话:“开发一个项目,基本上就是在不断的处理字符串”。下面对Python中常用的字符串操作方法进行介绍。


一、拼接字符串

使用 “+” 运算符完成对多个字符串的拼接,并产生一个新的字符串对象

代码示例如下图所示:

在这里插入图片描述

注意:字符串不允许直接与其他类型的数据拼接,否则会报错。

例如,使用下图的代码将字符串与数字拼接会产生报错:

在这里插入图片描述

如果要解决该问题,可以先将整数转为字符串,然后以拼接字符串的方法输出该内容。将整数转为字符串可以使用 str() 函数,修改后的代码及运行结果如下图所示:

在这里插入图片描述


二、计算字符串的长度

由于不同字符所占字节数不同,所以要计算字符串的长度,需要先了解各字符所占的字节数。在Python中,数字、英文、小数点、下划线和空格均占一个字节;一个汉字可能会占 2~4 个字节,具体占几个字节取决于采用的编码方式。汉字在 GBK/GB2312 编码中占 2 个字节,在 UTF-8 编码中占用 3 个字节。下面以 Python 默认的 UTF-8 编码为例进行说明,即一个汉字占 3 个字节,如下图所示:

在这里插入图片描述

在Python中,提供了 len() 函数计算字符串的长度,语法格式如下:

len(string)

其中,string 代表要统计长度的字符串。代码示例如下图所示:

在这里插入图片描述

从上面结果中可以看出,默认情况下,通过 len() 函数计算字符串的长度时,不区分英文、数字和汉字,所有字符都按一个字符计算。

但在实际开发中,有时需要获取字符串实际所占的字节数,即如果采用 UTF-8 编码,汉字占 3 个字节,采用 GBK 或者 GB2312 时,汉字占 2 个字节。这时,可以通过使用 encode() 方法(后面博客会讲到)进行编码后再获取字节数。例如,如果要获取采用 UTF-8 编码的字符串的长度,可以使用如下图所示代码:

在这里插入图片描述

运行结果中显示 27 个字节,是因为汉字加中文标点符号共 7 个,占 21 个字节,英文字母占 6 个字节,共 27 个字节。

如果要获取采用 GBK 编码的字符串长度,使用如下图代码:

在这里插入图片描述

结果显示 20 字节,是因为汉字加中文标点符号共 7 个,占 14 个字节,英文字母占 6 个字节,共 20 个字节。


三、截取字符串

由于字符串也属于序列,所以要截取字符串,可以采用切片方法实现。通过切片方法截取字符串的语法格式如下:

string[start : end : step]

参数说明

  • string:表示要截取的字符串。
  • start:表示要截取的第一个字符的索引(包括该字符),如果不指定,则默认为 0。
  • end:表示要截取的最后一个字符的索引(不包括该字符),如果不指定则默认为字符串的长度。
  • step:表示切片的步长,如果省略,则默认为 1,当省略该步长时,最后一个冒号也可以省略。

字符串的索引同序列的索引是一样的,也是从 0 开始,并且每个字符占一个位置。如下图所示:

在这里插入图片描述

例如,定义一个字符串,应用切片方法截取不同长度的子字符串输出,代码如下:

song = '曾梦想仗剑走天涯,看一看世界的繁华'
song_1 = song[2]  # 截取第3个字符
song_2 = song[7:]  # 从第8个字符截取
song_3 = song[:4]  # 从左边开始截取4个字符
song_4 = song[10:15]  # 截取第11到第15个字符
print('原字符串:', song)
print(song_1)
print(song_2)
print(song_3)
print(song_4)

执行代码后,显示内容如下:

原字符串: 曾梦想仗剑走天涯,看一看世界的繁华
想
涯,看一看世界的繁华
曾梦想仗
一看世界的

四、分割、合并字符串

在Python中,字符串对象提供了分割合并字符串的方法。分割字符串是把字符串分割为列表,而合并字符串是把列表合并为字符串,分割字符串和合并字符串可以看作是互逆操作。

1. 分割字符串

字符串对象的 split() 方法可以实现字符串分割,就是把一个字符串按照指定的分隔符切分为字符串列表。该列表的元素中,不包括分隔符split() 方法的语法格式如下:

str.split(sep, maxsplit)

参数说明

  • str:表示要分割的字符串。
  • sep:用于指定分隔符,可以包含多个字符,默认为 None(即所有空字符,比如空格、换行"\n"、制表符"\t") 。
  • maxsplit:可选参数,用于指定分割的次数,如果不指定或者指定为 -1 ,则分割次数没有限制,否则返回结果列表的元素个数,个数最多为 maxsplit+1。
  • 返回值:分隔后的字符串列表。该列表的元素是以分隔符为界限分割的字符串(不含分隔符),当该分隔符前面(或者与前一个分隔符之间)无内容时,将返回一个空字符串元素。

例如,指定一个字符串,然后应用 split() 方法根据不同的分隔符进行分割,代码如下:

a = 'CSDN开发社区网址 >>> https://www.csdn.net'
print('原字符串:', a)
print(a.split())  # 采用默认分隔符进行分割
print(a.split('>>>'))  # 采用多个字符进行分割
print(a.split('.', maxsplit=1))  # 采用.分割,并且只分割一次

运行后结果如下:

原字符串: CSDN开发社区网址 >>> https://www.csdn.net
['CSDN开发社区网址', '>>>', 'https://www.csdn.net']
['CSDN开发社区网址 ', ' https://www.csdn.net']
['CSDN开发社区网址 >>> https://www', 'csdn.net']

2. 合并字符串

合并字符串与拼接字符串不同,它会将多个字符串采用固定的分隔符连接在一起。例如,字符串 “张三=李四=王五=赵六”,就可以看作是通过分隔符 “=”[‘张三’, ‘李四’, ‘王五’, ‘赵六’] 列表中所有字符串合并为一个字符串的结果。

合并字符串可以使用字符串对象的 join() 方法实现,语法格式如下:

strnew = string.join(iterable)

参数说明

  • strnew:表示合并后生成的新字符串。
  • string:字符串类型,用于指定合并时分隔符。
  • iterable:可迭代对象,该迭代对象中的所有元素(字符串表示)将被合并为一个新的字符串。

代码示例如下图所示:

在这里插入图片描述


总结

以上讲的字符串常用方法中,截取分割合并这三种方法是开发中使用频率最高的,尤其是在爬虫领域。由于字符串的用法非常之多,考虑到零基础大白容易搞混,所以博主分为了上、下两部分来讲,下半部分会继续讲字符串的剩余常用方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小十一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值