ウィキペディアの記事から言語リストを抽出しようとしています: List_of_programming_languages_by_type. いくつかの行があります:
- [[Ada (プログラミング言語)|Ada]] (多目的言語)
- [[Afnix (プログラミング言語)|Afnix]] – データへの同時アクセスは自動的に保護されます (以前は「アレフ」と呼ばれていましたが、「アレフ」とは関係ありません)
- [[Cilk]] – コンカレント [[C (プログラミング言語)|C]]
複数の [[ ]] ブロックを含む行 (例では Click language を含む行) を除いて、ほとんどすべての行が正しく解析されます。解析コード:
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'}
複数の [[ ]] ブロックを 1 行で管理するにはどうすればよいですか?
PS 期待される結果:
{'wiki_link': None, 'lang_name': u'Clik'}