2017-05-31 58 views
-1

我正在浏览以下代码,不确定,re.split如何在这里拆分字符串。在Python中的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'] 
+0

你想要的结果是什么? – RomanPerekhrest

+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()函数包含一个空字符串,如果分割模式是字符串中的第一个OR最后一个元素。

1

要了解什么

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

拆分通过模式的发生。

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

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

对于您的示例,这将意味着: surname:Obama, prename:Barack, profession:president (斜体:分隔符,将其删除,粗体:列表的结果部分)。正如你看到的那样,在字符串的开头直接有一个匹配,因此将一个空字符串''分开,接着是:之后的三个条目。这正是你的结果列表所说的。