我正在通过以下代码而不确定,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 :(得分: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
(斜体:分隔符,被删除,粗体:列表的结果部分)。如您所见,在字符串的开头直接匹配,从而拆分空字符串''
,然后是:
之后的三个条目。这正是您的结果列表所说的内容。