言語処理100本ノック 2015「第3章: 正規表現」の20本目「JSONデータの読み込み」記録です。
1年以上前にやった内容の復習なのですが、ほとんど覚えていなかったです。正規表現は、必要な時に毎回ググりながらやっていたのですが、少なくても記事などにアウトプットしないと私には意味が小さいと痛感しました。
20本目は正規表現課題の準備としてJSONファイル読込で、非常に簡単です。pandas
を使って読み込んでいますが、改めてpandas
の便利さを実感します。
参考リンク
リンク | 備考 |
---|---|
020.JSONデータの読み込み.ipynb | 回答プログラムのGitHubリンク |
素人の言語処理100本ノック:20 | 多くのソース部分のコピペ元 |
ゼロから覚えるPython正規表現の基本とTips | 当ノックで学習した内容を整理しました |
正規表現 HOWTO | Python公式の正規表現How To |
re --- 正規表現操作 | Python公式のreパッケージ説明 |
環境
種類 | バージョン | 内容 |
---|---|---|
OS | Ubuntu18.04.01 LTS | 仮想で動かしています |
pyenv | 1.2.15 | 複数Python環境を使うことがあるのでpyenv使っています |
Python | 3.6.9 | pyenv上でpython3.6.9を使っています 3.7や3.8系を使っていないことに深い理由はありません パッケージはvenvを使って管理しています |
上記環境で、以下のPython追加パッケージを使っています。通常のpipでインストールするだけです。
種類 | バージョン |
---|---|
pandas | 0.25.3 |
第3章: 正規表現
学習内容
Wikipediaのページのマークアップ記述に正規表現を適用することで,様々な情報・知識を取り出します.
正規表現, JSON, Wikipedia, InfoBox, ウェブサービス
ノック内容
Wikipediaの記事を以下のフォーマットで書き出したファイルjawiki-country.json.gzがある.
- 1行に1記事の情報がJSON形式で格納される
- 各行には記事名が"title"キーに,記事本文が"text"キーの辞書オブジェクトに格納され,そのオブジェクトがJSON形式で書き出される
- ファイル全体はgzipで圧縮される
以下の処理を行うプログラムを作成せよ.
20. JSONデータの読み込み
Wikipedia記事のJSONファイルを読み込み,「イギリス」に関する記事本文を表示せよ.問題21-29では,ここで抽出した記事本文に対して実行せよ.
回答
回答プログラム 020.JSONデータの読み込み.ipynb
from pprint import pprint
import pandas as pd
df_wiki = pd.read_json('./jawiki-country.json', lines=True)
pprint(df_wiki[(df_wiki['title'] == 'イギリス')]['text'].values.item())
回答解説
read_json
関数でJSONファイルを読み込んでいます。lines
パラメータにTrueを渡すことで[JSON Lines](JSON Lines)というフォーマットを読み込めます。
df_wiki = pd.read_json('./jawiki-country.json', lines=True)
読み込んだDataFrame
はこんな感じ。title
に国名が入っています。
結果を最後に出力します。改行したかったのでpprint
関数使っています。
pprint(df_wiki[(df_wiki['title'] == 'イギリス')]['text'].values.item())
('{{redirect|UK}}\n'
'{{基礎情報 国\n'
'|略名 = イギリス\n'
中略
'[[Category:君主国]]\n'
'[[Category:島国|くれいとふりてん]]\n'
'[[Category:1801年に設立された州・地域]]')