我正在浏览以下代码,不确定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
(斜体:删除,粗体:列表中的部分部分(。如您所见,字符串的开头直接有匹配,因此将一个空字符串''
分开,然后在:
之后的三个条目中分开。这正是您的结果列表所说的。