👩💻
言語処理100本ノック 2020 (Rev 2) 第3章: 正規表現 21. カテゴリ名を含む行を抽出
問題
21. カテゴリ名を含む行を抽出
記事中でカテゴリ名を宣言している行を抽出せよ
solution21.py
import pandas as pd
df = pd.read_json('chapter03/jawiki-country.json.gz', lines=True, compression='infer')
text_uk = df.query('title=="イギリス"')['text'].values[0]
splited_text_uk = text_uk.split('\n')
ans = list(filter(lambda x: '[Category:' in x, splited_text_uk))
print(ans)
output
['[[Category:イギリス|*]]', '[[Category:イギリス連邦加盟国]]', '[[Category:英連邦王国|*]]', '[[Category:G8加盟国]]', '[[Category:欧州連合加盟国|元]]', '[[Category:海洋国家]]', '[[Category:現存する君主国]]', '[[Category:島国]]', '[[Category:1801年に成立した国家・領域]]']
記事中でカテゴリ名を宣言している行は「Category:」を含みます。この問題では、filter
メソッドを用いて「Category:」を含む行のみを取り出します。filter
オブジェクトは、イテラブルオブジェクトのサブセットを表すものですので、そのままでは要素を確認することができません。イテラブルオブジェクトのサブセットとは、イテラブルオブジェクトから特定の条件を満たす要素だけを抽出したものです。要素を確認するには、list
関数や、next
関数を使用して要素を取り出す必要があります。
Discussion