pprintよりデータ構造が見やすいPythonライブラリ「prettyprinter」



配列やディクショナリデータのダンプが見易くなる Python用のライブラリ「prettyprinter」の紹介です。

 Pythonで変数などの文字列をアウトプットさせる時は ' print ' メソッドを使いますが、 配列やディクショナリのデータ構造を表示させる時には ' pprint ' モジュールを使います。

# pprintを使った例
from pprint import pprint # pprintの読み込み

arr = [ 'arr1', 'arr2', 'arr3', 'arr4' ] # 配列

pprint(arr) # 配列を表示

pprintを使って上のPythonコードを実行

 上の配列ぐらいでは気になることはありませんが、ディクショナリなどでデータ数が多くなってくると、アウトプット時に可視性が悪くなることも少なくありません。

 そんなデータ構造を表示させる時に、色付きで 見易くなるPython用のライブラリが「prettyprinter」です。

 ' prettyprinter ' を使って配列を表示

 

prettyprinter で出来ること

- データ構造を フォーマット & 色付きで表示させることが出来る

' pprint ' と ' prettyprinter ' の比較
prettyprinter


prettyprinter のインストール

 prettyprinter は ターミナル上から ' pip ' コマンドを使ってインストールします。なお、インストールされている Python のバージョンが ' 3.6.* ' 以上の必要があります。

# prettyprinterのインストール
pip install prettyprinter


prettyprinter の使い方

 prettyprinter の使用法は簡単で、 モジュールを読み ' pprint ' を置き換えるだけで使うことができます。

from prettyprinter import cpprint # prettyprinterのインポート
# from pprint import pprint

# ダンプするディクショナリ
data = {
        "id": 1,
        "name": "user1",
        "created_at": "2017-01-19 03:14:07"
        }

# pprint(data)
cpprint(data)# pprintの代わりにprettyprinterを使用

' prettyprinter ' を使って、ディクショナリデータのアウトプット

アウトプットする色のハイライトも ' light ', ' dark ' の二種類が用意されており、Macにデフォルトで用意されているホワイトカラーの ' terminal 'でも、違和感なく使用することができます。

from prettyprinter import cpprint, set_default_style

# output されるシンタックスハイライトを'ライト'テーマにセット
set_default_style("light") # デフォルトは 'dark'

data = {
        "id": 1,
        "name": "user1",
        "created_at": "2017-01-19 03:14:07"
        }

cpprint(data)

上が ' light '、下が通常の ' dark ' テーマ


 また、' pprint ' のメソッド名を変えたくない場合でも モジュール読み込み時に ' as ' メソッドを使えば、そのまま使えます。

# pprintの関数名のまま使い場合
from prettyprinter import cpprint as pprint


IPython で prettyprinter を使う場合

 prettyprinterは IPython でもサポートされており、profileの startup 内 に登録すれば使用する事ができます。

 コマンドライン上で下記のコマンドを叩けば、IPython用の起動時に読み込むスタートアップファイルが作成されます。

# /ユーザー名/.ipython/profile_default/startup ファイルが作成されます
touch "`ipython locate profile default`/startup/init_prettyprinter.py"
# エディタが開かれる
vim "`ipython locate profile default`/startup/init_prettyprinter.py"


vim が起動した後、下記のコードを追加します。

from pygments import styles

# ライトテーマ用
from prettyprinter.color import GitHubLightStyle
ipy = get_ipython()
ipy.colors = 'LightBG'
ipy.highlighting_style = GitHubLightStyle

# ダークテーマ用
ipy = get_ipython()
ipy.colors = 'linux'
ipy.highlighting_style = styles.get_style_by_name('monokai')

import prettyprinter

prettyprinter.install_extras(
    # 用途によって、下記の要素をコメントアウト
    include=[
        'ipython',
        'attrs',
        'django',
    ],
    warn_on_error=True
)

IPython上で prettyprinter を使ってアウトプットした例
ipython

自身の環境の Jupyter Notebook上で使用した場合、フォーマットされます 
Jupyter notebook


Summary

 以上が prettyprinter の紹介でした。

 ダンプしたデータの可視性が上がるので、Python ' 3.6以上 ' を使って開発している人、IPython や Jupyter Notebookを使う人には オススメできるライブラリです。

GitHub : tommikaikkonen/prettyprinter

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ