Python 使用正则表达式解析Wikipedia链接
我试图从维基百科的文章中提取语言列表:按类型列出编程语言列表。有几行:Python 使用正则表达式解析Wikipedia链接,python,regex,Python,Regex,我试图从维基百科的文章中提取语言列表:按类型列出编程语言列表。有几行: [[Ada(编程语言)| Ada]](多用途语言) [[Afnix(编程语言)| Afnix]]–自动保护对数据的并发访问(以前称为“Aleph”,但与“Alef”无关) [[Cilk]]–一种并发[[C(编程语言)| C]] 除了包含多个[[]]块的行(示例中包含Click language的行)之外,几乎所有行的解析都是正确的。解析代码: for line in lines: lang = re.search
- [[Ada(编程语言)| Ada]](多用途语言)
- [[Afnix(编程语言)| Afnix]]–自动保护对数据的并发访问(以前称为“Aleph”,但与“Alef”无关)
- [[Cilk]]–一种并发[[C(编程语言)| C]]
for line in lines:
lang = re.search('^\*+\s*(\[\['
'((?P<wiki_link>.+?)(\|))?'
'(?P<lang_name>.+?)'
'\]\])', line)
if lang:
print lang.groupdict()
如何在一行中管理多个[[]]块
p.S.预期结果:
{'wiki_link': None, 'lang_name': u'Clik'}
你就快到了:
lang = re.search('^\*+\s*(\[\['
'((?P<wiki_link>[^]]+?)(\|))?'
'(?P<lang_name>.+?)'
'\]\])', line)
你就快到了:
lang = re.search('^\*+\s*(\[\['
'((?P<wiki_link>[^]]+?)(\|))?'
'(?P<lang_name>.+?)'
'\]\])', line)
为什么要使用普通正则表达式而不是wiki标记解析器?预期结果是什么?Matt,这只是出于教育原因:)例如,我的预期结果与“Ada”结果相同。为什么要使用普通正则表达式而不是wiki标记解析器?预期结果是什么?Matt,这只是出于教育原因:)例如,我的预期结果与“Ada”结果相同。
>>> print lang.groupdict()
{'wiki_link': None, 'lang_name': 'Cilk'}