Python核心知识点:深入了解字符串的拆分,连接及拼接教程

栏目: Python · 发布时间: 6年前

内容简介:生活中总有几样注定的事:死亡、税单以及需要处理字符串的程序员。 字符串可以有多种形式。 它们可以是非结构化的文本,用户名,产品描述,数据库列表名,或者其它任何我们使用语言描述的内容。既然字符串数据几乎无处不在,那么掌握所使用的工具如何进行字符串处理是非常重要的。 幸运的是,与其它语言甚至旧版本的Python语言相比,Python语言对字符串的操作非常简单。您将从本文中学习一些最基本的字符串操作:拆分,连接和拼接。 您不仅将学习如何使用这些工具,而且还将深入了解它们是如何工作。

生活中总有几样注定的事:死亡、税单以及需要处理字符串的程序员。 字符串可以有多种形式。 它们可以是非结构化的文本,用户名,产品描述,数据库列表名,或者其它任何我们使用语言描述的内容。

既然字符串数据几乎无处不在,那么掌握所使用的 工具 如何进行字符串处理是非常重要的。 幸运的是,与其它语言甚至旧版本的 Python 语言相比,Python语言对字符串的操作非常简单。

您将从本文中学习一些最基本的字符串操作:拆分,连接和拼接。 您不仅将学习如何使用这些工具,而且还将深入了解它们是如何工作。

字符串拆分

Python语言中,字符串是以str对象的形式表示的,是不可变的:这意味着不能直接更改内存中的对象。 记住这两个特点将会帮助您学习(并且记住)如何使用.split( )。

您猜到字符串的这两个特征是如何与Python语言中的拆分功能相关的吗?如果您猜的到 因为字符串是一种特殊类型,所以.split( )是一个实例方法,那么您就是正确的!在其它一些语言(如Perl)中,是将原始字符串用作独立的.split( )函数的输入,而不是使用方法调用字符串本身。

注意:如何调用字符串方法

这里显示的 .split()这种写法就是对字符串实例进行调用的方法。 可称之为为静态方法,但这并不理想的形式,因为它比较“冗长”。为了完整起见,举个例子:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

与下面首选的方法一比较,就会觉得上面的写法显得有些笨拙了:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

有关Python语言中的实例、类和静态方法的更多内容,请查看我们的

Python深入教程

字符串不可变会怎样? 这其实是提醒您字符串方法不支持就地操作,但它们会在内存中返回一个新对象。

注意:就地操作

就地操作是直接更改被调用的对象的操作。 常见的例子是对列表使用的.append( )方法:当您对列表使用.append( )函数时,原列表会被更改,原列表中填加了.append( )的输入。

无参数字符串拆分

在深入学习字符串拆分之前,先看一个简单的例子:

Python 代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

输出结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

这实际上是.split( )调用的一个特例,就是因为简单,所以我选了它做例子。如果不指定任何分隔符,.split( )会使用空格做为分隔符。

这种不带参数直接调用.split( )的另一个特性是它会自动删除字符串前导、尾随以及连续的空格。 比较一下对下面的字符串调用split( )时,不使用分割符和使用" "(空格)作为分割符时的结果:

Python 代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

Python 代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

首先要注意的是,这个例子反映了Python语言中字符串的不可改变性:后面调用.split( )时是对原始字符串进行操作,而不是对第一次调用.split( )后生成的列表进行操作。

第二个你应该注意到的是,无参数调用.split( )会提取句子中的单词并丢弃任何空格。

指定分隔符

.split(" ")的结果很直观。 当有前导或尾随分隔符时,您将得到一个空字符串,这可以在结果列表的第一个和最后一个元素中看到。

当有多个连续的分隔符(例如“this”和“is”之间以及“is”和“my”之间的多个空格),第一个将用作分隔符,后续的分隔符将进入结果列表 作为空字符串。

注意:调用.split()时的分隔符

虽然上面的示例使用单个空格字符作为.split( )的分隔符,但并没有限制您使用的分隔符的类型或字符串长度。 唯一的要求是您的分隔符是一个字符串。 你可以使用从“...”到“separator”等任何东西。

使用Maxsplit对拆分进行限定

.split( )有一个名为maxsplit的可选参数。 默认情况下,.split( )将在调用时进行所有可能的拆分。 但是,如果对maxsplit赋值后,只会生成指定数量的拆分。 用我们之前的示例字符串,可以看到maxsplit的运行情况:

Python 代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

运行结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

如上所示,如果将maxsplit设置为1,则第一个空白区域将作为分隔符,其余的部分将被忽略。 让我们做一些练习来测试一下到目前为止所学的一切。

练习: “ 自己试试看: Maxsplit”

如果对maxsplit赋一个负数,结果会是怎样?

答案: “ 自己试试看: Maxsplit”

.split( ) 将对所有的分隔符上进行字符串拆分,这和不设置Maxsplit参数时的缺省设置是一样的。

练习: “章节理解检查”

您最近拿到了一个逗号分隔(CSV)的文件,但是其格式编排的大有问题。 您的任务是将每行提取到一个列表中,该列表的每个元素代表该文件的列。 这个文件的格式有什么问题呢? 其中的“Address”字段中包含了多个逗号,但实际上需要在列表中表示为单个元素!

假定读入到内存中的文件是下面这样的多段字符串:

CSV文件:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

希望的输出结果应该是这样的由列表组成的列表

Python输出:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

内层的列表是我们关心的CSV文件的列元素,每一个内层的列表是CSV文件的一行,外层的列表把所有的行组合起来。

答案: “章节理解检查”

这里给出我的答案。可以由几种方法得到结果。重要的是如何使用.split(),以及使用附加参数得到希望的结果:

Python代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

我们调用了两次.split( )。第一个调用可能理解起来有点难,但不要担心!我们一步一步看进去,您就会对这些表达式熟悉了。来看看第一个.split( )调用吧:unsplit.split(" n")[1:]。

第一个元素是unsplit,是指向输入字符串的变量。之后就是.split( )调用:. split(" n")。这里,我们使用了一个特殊字符 - 换行符 做为分隔符。

是做什么的呢?顾名思义,它指明在读取字符串的内容时,它之后的每个字符都应显示在下一行。像我们使用的input_string这样的多行字符串中,每行的末尾都有一个隐藏的 n。

这一行最后的部分用法可能有点新:[1:]。这条语句执行到这个部分之前会输出一个新的列表, [1:]看起来像列表索引表示,其实它就是一种列表索引的表示方法!这一行最后额外的索引表示法会为我们输出一个列表切片。在本例中,我们取出索引1以及其后面的所有内容,丢弃索引0处的元素。

总之,我们遍历一个字符串列表,其中每个元素代表多行输入字符串中除了第一行之外的每一行。

对每一行字符串,我们再次使用.split( )进行字符拆分,但这次我们使用maxsplit仅拆分前两个逗号,保留地址部分的内容原封不动。 之后,我们把结果添加到已定义的列表数组中,并返回给调用者。

字符串的连接及拼接

另一个字符串的基本操作是与拆分字符串相反的操作:字符串连接。 如果您还没有关注到这个功能,请不要担心。 这只是把字符串“粘在一起”的一种奇特方式。

使用 + 操作符进行连接

有几种方法可以做到这一点,具体取决于您要实现的目标。 最简单和最常用的方法是使用加号(+)将多个字符串添加到一起。 只需在您想要连接的字符串之间放置一个+:

Pyton代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

和数学运算一样,您还可以将字符串相乘来进行字符串重复:

Pyton代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

请记住,字符串本身是不可改变的! 如果想把字符串连接或重复的结果存在变量中,则必须将结果赋给新的字符串变量进行保存。

Pyton代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

Pyton代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

Pyton代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

如果不是不可改变的字符串,则full_sentence会输出"Hello,world,world"。

另一个需要注意的是Python语言不会进行隐式字符串转换。 如果您尝试将字符串与非字符串类型连接,Python将引发TypeError:

Pyton代码:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

结果:

Python核心知识点:深入了解字符串的拆分,连接及拼接教程

出错的原因是在Python语言中,您只能将字符串与其他字符串连接起来,这是中您需要注意到的Python语言的特点。如果您使用过诸如JavaScript之类的语言就会知道,这些语言中会尝试进行隐式类型转换。


以上所述就是小编给大家介绍的《Python核心知识点:深入了解字符串的拆分,连接及拼接教程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Amazon Web Services

Programming Amazon Web Services

James Murty / O'Reilly Media / 2008-3-25 / USD 49.99

Building on the success of its storefront and fulfillment services, Amazon now allows businesses to "rent" computing power, data storage and bandwidth on its vast network platform. This book demonstra......一起来看看 《Programming Amazon Web Services》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具