python中的re.split代码



我正在浏览以下代码,不确定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']

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

了解

re.split(模式,字符串,maxSplit = 0,flags = 0 (
在这里做,让我们拥有查看文档:

split string staters

的出现

因此,从您的示例中,您正在寻找文本中的所有",* *w*: ",并将其用作所需的结果文本之间的定界符。

您正在使用的模式正在寻找任何数量的,,其次是任何数量的Whitespaces,任何数量的单词字符,然后是:和Whitespace。

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

最新更新