👩‍💻

言語処理100本ノック 2020 (Rev 2) 第3章: 正規表現 21. カテゴリ名を含む行を抽出

2023/01/08に公開約900字

問題

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 関数を使用して要素を取り出す必要があります。

https://github.com/kurokawa5/nlp100_2020/blob/main/chapter03/solution21.py

参考記事

第3章: 正規表現

Discussion

ログインするとコメントできます