1
我试图从维基百科文章中提取语言列表:List_of_programming_languages_by_type。有几行字:维基百科链接与正则表达式解析
- [阿达(编程语言)|阿达](多用途语言)
- [Afnix(编程语言)| Afnix] –对数据的并发访问自动保护(以前称为'阿莱夫',但无关 '' Alef的 '')
- [Cilk的] –并发[C(编程语言)| C]
几乎所有人除了包含多个[[]]块的行(示例中带有Click语言的行)之外,l行被正确解析。解析代码:
for line in lines:
lang = re.search('^\*+\s*(\[\['
'((?P<wiki_link>.+?)(\|))?'
'(?P<lang_name>.+?)'
'\]\])', line)
if lang:
print lang.groupdict()
输出:
{'wiki_link': u'Ada (programming language)', 'lang_name': u'Ada'}
{'wiki_link': u'Afnix (programming language)', 'lang_name': u'Afnix'}
{'wiki_link': u'Cilk]] – a concurrent [[C (programming language)', 'lang_name': u'C'}
我怎么能在一个在线多[[]]块管理?
P.S.预期结果:
{'wiki_link': None, 'lang_name': u'Clik'}
为什么使用普通正则表达式而不是维基标记解析器? –
你的预期结果是什么? – juliomalegria
马特,这只是出于教育原因:) –