22

デフォルトでREPLでプリティプリントを有効にするにはどうすればよいですか?

現在、私はpprint.pprint()関数を使用してそれを行っています。

>>> pprint.pprint(data)
{'SHIP_CATEGORY': '',
 'SHIP_QUANTITY': 1,
 'SHIP_SEPARATELY': 0,
 'SHIP_SUPPLEMENT': 0,
 'SHIP_SUPPLEMENT_ONCE': 0,
 'THUMBNAIL': ''}

しかし、デフォルトでかなり印刷したい

>>> data
{'SHIP_CATEGORY': '',
 'SHIP_QUANTITY': 1,
 'SHIP_SEPARATELY': 0,
 'SHIP_SUPPLEMENT': 0,
 'SHIP_SUPPLEMENT_ONCE': 0,
 'THUMBNAIL': ''}

私は何を試しましたか?
グーグルで検索しました。pprintほとんどの結果がモジュールを指すものは何も見つかりませんでした

4

3 に答える 3

25

sys.displayhookを使用する

import pprint
import sys

orig_displayhook = sys.displayhook

def myhook(value):
    if value != None:
        __builtins__._ = value
        pprint.pprint(value)

__builtins__.pprint_on = lambda: setattr(sys, 'displayhook', myhook)
__builtins__.pprint_off = lambda: setattr(sys, 'displayhook', orig_displayhook)

対話型シェルを実行するたびに入力したくない場合は、上記のコードをPYTHONSTARTUPに配置します。

使用法:

>>> data = dict.fromkeys(range(10))
>>> data
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
>>> pprint_on()
>>> data
{0: None,
 1: None,
 2: None,
 3: None,
 4: None,
 5: None,
 6: None,
 7: None,
 8: None,
 9: None}
>>> pprint_off()
>>> data
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
于 2013-06-22T07:37:38.883 に答える
11

IPythonシェルを使用します。

In [10]: data = {'SHIP_CATEGORY': '',  'SHIP_QUANTITY': 1, 'SHIP_SEPARATELY': 0, 'SHIP_SUPPLEMENT': 0, 'SHIP_SUPPLEMENT_ONCE': 0,}

In [11]: data
Out[11]: 
{'SHIP_CATEGORY': '',
 'SHIP_QUANTITY': 1,
 'SHIP_SEPARATELY': 0,
 'SHIP_SUPPLEMENT': 0,
 'SHIP_SUPPLEMENT_ONCE': 0}

--no-pprintこのきれいな印刷を無効にする場合のオプションもあります。

IPythonシェルには、タブ補完、複数行の貼り付け、シェル コマンドの実行などの機能もあります。したがって、通常の python シェルよりもかなり優れています。

于 2013-06-22T07:34:20.040 に答える