在python中使用多个分隔符拆分字符串重新分割(摘自《Python烹饪书》)

2024-10-05 13:18:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python Cookbook第3版的第2章第2.1节中,您有以下内容:

>>> line = 'asdf fjdk; afed, fjek,asdf,      foo'
>>> import re
>>> re.split(r'[;,\s]\s*', line)
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

是的,这是一个很好的例子。。。但是当我尝试删除regex中的\s*时,它仍然具有相同的效果。。。见下文:

^{pr2}$

那么,除了没有。。哪个更简单、更短?在

请输入您的输入。在


Tags: importrefooline例子regexsplit效果
2条回答

我没有这本书,所以我不知道作者的意图。但是David Beazley非常敏锐,所以我只能猜测这是为了区分这两行的输出。在

>>> line = 'asdf fjdk; afed, fjek,asdf,      foo'
>>> line = 'asdf fjdk; ; afed, fjek,asdf,      foo'

使用书中的regex,第二行是

^{pr2}$

使用你修改过的正则表达式

['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

正则表达式将折叠组[;,\s]中没有用不在匹配组中的字符分隔的所有符号。在

两个正则表达式都不同。在

  • 第一个regex声明,分隔符应该是逗号、分号或空格(可选地后跟空格)

  • 第二个regex声明,分隔符应该是一个或多个逗号、分号或空格。

因此,根据定义,如果将正则表达式应用于以下字符串,则可以很容易地找到差异

line = 'asdf fjdk;; afed, fjek,asdf,      foo'

所以结果会有所不同

^{pr2}$

现在,您想要的regex是什么取决于您要处理的输入是什么,以及所有可接受测试用例的期望输出是什么。在

相关问题 更多 >

    热门问题