2011-11-27 40 views
0

我有一段脚本扫描了一段文本,并返回了一个我将保存到数组中的组。代码如下所示:与正则表达式,findall和组匹配的Python模式

pattern = re.compile(r'<span id="first_name">(.+?)</span>') 
matches = pattern.findall(str(my_text_file)) 

这工作真棒,我可以扫描的名字在我的文本文件,并写入到一个数组这样做:

for firstname in matches: 
    if firstname not in list_of_names: 
     list_of_names.append(firstname) 

但现在我需要扩大我的模式检索两个组,而不是一个,我不知道我应该如何去第二组。

当我有这样的:

pattern = re.compile(r'<span id="first_name">(.+?)</span><span id="last_name">(.+?)</span>') 
matches = pattern.findall(str(my_text_file)) 

我怎么把这些第二组(姓氏)在不同的阵列?

+0

你有什么*尝试*?你有没有试过看'pattern.findall'正在返回什么?您是否阅读过文档以查看它应该返回的内容? –

+0

python文档说:“返回一个组列表;如果模式有多个组,这将是一个元组列表。空结果包含在结果中,除非它们触及另一个匹配的开始。所以我想我会得到一个元组列表......但我不明白这一点,因为我本身不会说英语...... –

回答

2
for match in matches: 
    first_names.append(match[0]) 
    last_names.append(match[1]) 
+0

谢谢...要试着在我的脚本中实现这个... –