首页 > 编程知识 正文

字符串算法(串匹配算法)

时间:2023-05-05 22:53:19 阅读:85567 作者:203

分割字符串

在Python语言中,字符串表示为str对象,是不变的。 也就是说,不能直接更改内存中的对象。 记住这两个特征有助于学习(并记住).split (的使用方法)。

你认为字符串的这两个特征与Python语言的分割功能有什么关联? 因为字符串是特殊类型, split ) )如果推测为实例方法,则你是正确的。 其他语言(如Perl )使用原始字符串作为函数的输入,而不是使用方法调用字符串本身。

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

这里所示的. split ) )的写法是调用字符串实例的方法。 可以称为静态方法,但这不是理想的形式。 因为那个比较“冗长”。 为了完整起见,让我举个例子:

与下面的优先方法相比,上面的写法看起来有点笨拙。

有关Python语言的实例、类和静态方法的详细信息,请参见此处的

Python深度教程

私信小编007可以获得大量的PDF和视频教程! 想快点入门拿高薪!

如果字符串不可变会怎么样? 这将警告您字符串方法不支持就地操作,但会将新对象返回到内存中。

注意:当场操作

就地操作是直接更改被调用对象的操作。 典型的示例是对列表使用. append ) )方法。 append ) )函数将更改原始列表,并将. append )的输入添加到原始列表中。

无参数字符串分割

在详细学习字符串分割之前,让我们先来看一个简单的例子。

Python代码:

输出结果:

这实际上是. split ()调用的特例,因为很简单,所以作为例子。 如果不指定分隔符, split ()将使用空格作为分隔符。

没有参数. split ) )的另一个特性是自动删除字符串的开头、结尾和连续的空格。 让我们比较一下在对以下字符串调用split ()时不使用分隔符和使用“”(空格)作为分隔符的结果。

Python代码:

结果:

Python代码:

结果:

首先,请注意本示例反映了Python语言中字符串的不变性。 操作原始字符串,而不是稍后调用. split (调用时首先是. split ) )后生成的列表。

第二,在没有参数的情况下调用. split (将提取语句中的单词,并丢弃空格)。

指定分隔符

. spl

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

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

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

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

使用Maxsplit对拆分进行限定

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

Python 代码:

运行结果:

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

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

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

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

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

练习: “章节理解检查”

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

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

CSV文件:

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

Python输出:

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

答案: “章节理解检查”

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

Python代码:

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

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

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

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

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

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

字符串的连接及拼接

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

使用 + 操作符进行连接

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

Pyton代码:

结果:

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

Pyton代码:

结果:

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

Pyton代码:

结果:

Pyton代码:

结果:

Pyton代码:

结果:

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

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

Pyton代码:

结果:

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。