python中的re.split代码

时间:2017-05-31 07:19:48

标签: python regex

我正在通过以下代码而不确定,re.split如何在此处拆分字符串。

lines = ["surname: Obama, prename: Barack, profession: president", "surname: 
Merkel, prename: Angela, profession: chancellor"]
for line in lines:
    re.split(",* *\w*: ", line)
['', 'Obama', 'Barack', 'president']
['', 'Merkel', 'Angela', 'chancellor']

2 个答案:

答案 0 :(得分:2)

re.split()是与Python正则表达式库(re)关联的split()函数。

在这种情况下,该函数正在查找行中与re.split()函数中显示的模式匹配的任何子字符串。

模式:",* *\w*: "以下列方式突破:

",*  > matches zero OR more commas
 *   > matches zero OR more spaces
\w*  > matches zero OR more word characters (0-9, a-z, A-Z, _)
: "  > matches a colon followed by a space

基本上,它试图找到:像:

surname:

, prename:

, profession:

如果找到这些模式,它们将从行中删除,留下列表中显示的值。在列表的第一个位置找到的空字符串''是因为split()函数包含空字符串,如果拆分模式是字符串中的第一个或最后一个元素。

答案 1 :(得分:1)

要了解

re.split(pattern, string, maxsplit=0, flags=0)
在这里做了什么,让我们看看documentation

  

pattern 的出现拆分字符串

因此,在您的示例中,您正在查找文本中的所有",* *\w*: ",并将其用作所需文本之间的分隔符。

您正在使用的模式是查找任意数量的,,后跟任意数量的空格,任意数量的单词字符后跟:和空格。

对于您的示例,这意味着: surname: Obama , prename: Barack , profession: president (斜体:分隔符,被删除,粗体:列表的结果部分)。如您所见,在字符串的开头直接匹配,从而拆分空字符串'',然后是:之后的三个条目。这正是您的结果列表所说的内容。