u++の備忘録

言語処理100本ノック 2020「25. テンプレートの抽出」

問題文

nlp100.github.io

問題の概要

この辺りから、正規表現芸人っぽくなってきます。Wikipediaの「基礎情報」テンプレートの書き方*1が参考になります。

import re
import pandas as pd


df = pd.read_json('ch03/jawiki-country.json.gz', lines=True)
uk_text = df.query('title=="イギリス"')['text'].values[0]
uk_texts = uk_text.split('\n')

pattern = re.compile('\|(.+?)\s=\s*(.+)')
ans = {}
for line in uk_texts:
    r = re.search(pattern, line)
    if r:
        ans[r[1]] = r[2]
print(ans)