Python
 Computer >> コンピューター >  >> プログラミング >> Python

pprintモジュール(データプリティプリンター)


pprintモジュール(lib / pprint.py)は、Pythonの標準ライブラリの一部であり、標準のPythonディストリビューションとともに配布されます。 pprintという名前は、かわいいプリンターの略です。 pprintモジュールの機能により、Pythonデータ構造の見栄えが良くなります。 Pythonインタープリターで正しく解析できるデータ構造はすべてエレガントにフォーマットされています。フォーマットされた式は可能な限り1行に保持されますが、長さがフォーマットの幅パラメーターを超えると、複数の行に分割されます。 pprint出力のユニークな機能の1つは、表示表現がフォーマットされる前に辞書が自動的にソートされることです。

pprintモジュールには、PrettyPrinterクラスの定義が含まれています。そのコンストラクターは次の形式を取ります-

pprint.PrettyPrinter(indent, width, depth, stream, compact)

インデントパラメーターは、各再帰レベルで追加されるインデントを定義します。デフォルトは1です。

幅パラメータのデフォルトは80です。必要な出力はこの値によって制限されます。長さが幅よりも大きい場合は、複数の行に分割されます。

深さパラメータは、印刷されるレベルの数を制御します。

ストリームパラメータは、デフォルトではstd.out –デフォルトの出力デバイスです。ファイルなどの任意のストリームオブジェクトを取得できます。

コンパクトパラメータIDはデフォルトでFalseに設定されています。 trueの場合、幅内で調整可能なデータのみが表示されます。

PrettyPrinterクラスは、次のメソッドを定義します-

pprint() −PrettyPrinterオブジェクトのフォーマットされた表現を印刷します

pformat() −コンストラクターへのパラメーターに基づいて、オブジェクトのフォーマットされた表現を返します。

次の例は、PrettyPrinterクラスの簡単な使用法を示しています。

import pprint
students = {"Dilip":["English", "Maths", "Science"],
   "Raju":{"English":50,"Maths":60, "Science":70},
   "Kalpana":(50,60,70)}
pp = pprint.PrettyPrinter()
print ("normal print output")
print (students)
print ("----")
print ("pprint output")
pp.pprint(students)

出力には、通常の印刷表示ときれいな印刷表示が表示されます。

normal print output
{'Dilip': ['English', 'Maths', 'Science'], 'Raju': {'English': 50, 'Maths': 60, 'Science': 70}, 'Kalpana': (50, 60, 70)}
----
pprint output
{'Dilip': ['English', 'Maths', 'Science'],
'Kalpana': (50, 60, 70),
'Raju': {'English': 50, 'Maths': 60, 'Science': 70}}

pprintモジュールは、PrettyPrinterメソッドに対応する便利な関数pprint()およびpformat()も定義します。以下の例では、pprint()関数を使用しています。

from pprint import pprint
students = {"Dilip":["English", "Maths", "Science"],
"Raju":{"English":50,"Maths":60, "Science":70},
"Kalpana":(50,60,70)}
print ("normal print output")
print (students)
print ("----")
print ("pprint output")
pprint (students)

次の例では、pformat()メソッドとpformat()関数を使用します。 pformat()メソッドを使用するには、最初にPrettyPrinterオブジェクトを設定します。どちらの場合も、フォーマットされた表現は通常のprint()関数を使用して表示されます。

import pprint
students = {"Dilip":["English", "Maths", "Science"],
"Raju":{"English":50,"Maths":60, "Science":70},
"Kalpana":(50,60,70)}
print ("using pformat method")
pp = pprint.PrettyPrinter()
string = pp.pformat(students)
print (string)
print ('------')
print ("using pformat function")
string = pprint.pformat(students)
print (string)

上記のコードの出力は次のとおりです

using pformat method
{'Dilip': ['English', 'Maths', 'Science'],
'Kalpana': (50, 60, 70),
'Raju': {'English': 50, 'Maths': 60, 'Science': 70}}
------
using pformat function
{'Dilip': ['English', 'Maths', 'Science'],
'Kalpana': (50, 60, 70),
'Raju': {'English': 50, 'Maths': 60, 'Science': 70}}

プリティプリンターは、カスタムクラスでも使用できます。クラス内では、__ repr __()メソッドがオーバーライドされます。 __repr __()メソッドは、repr()関数が使用されるときに呼び出されます。これは、Pythonオブジェクトの公式の文字列表現です。 print()関数のパラメーターとしてオブジェクトを使用すると、repr()関数の戻り値が出力されます。

次の例では、__ repr __()メソッドはプレーヤーオブジェクトの文字列表現を返します

import pprint
class player:
def __init__(self, name, formats = [], runs = []):
self.name = name
self.formats = formats
self.runs = runs
def __repr__(self):
dct = {}
dct[self.name] = dict(zip(self.formats,self.runs))
return (repr(dct))
l1 = ['Tests','ODI','T20']
l2 = [[140, 45, 39],[15,122,36,67, 100, 49],[78,44, 12, 0, 23, 75]]
p1 = player("virat",l1,l2)
pp = pprint.PrettyPrinter()
pp.pprint(p1)

上記のコードの出力は-

です。
{'virat': {'Tests': [140, 45, 39], 'ODI': [15, 122, 36, 67, 100, 49], 'T20': [78, 44, 12, 0, 23, 75]}}

pprintを使用した再帰的なデータ構造

pprintを使用して再帰オブジェクトを印刷しようとすると、最初の表現のみが表示され、後続の再帰では、その参照のみが印刷されます。

>>> import pprint
>>> numbers = list(range(1,6))
>>> numbers.append(numbers)
>>> print (numbers)
[1, 2, 3, 4, 5, [...]]
>>> pprint.pprint(numbers)
[1, 2, 3, 4, 5, <Recursion on list with id=1403633698824>]

出力幅の制限

widthパラメータをデフォルトの80から他の値に変更すると、構文に違反しないように注意しながら、複数行が表示されるように出力がフォーマットされます。

import pprint
students = {"Dilip":["English", "Maths", "Science"],
"Raju":{"English":50,"Maths":60, "Science":70},
"Kalpana":(50,60,70)}
pp=pprint.PrettyPrinter(width = 20)
pp.pprint(students)

コードは、この記事の最初の例に似ています。ただし、PrettyPrinterオブジェクトはwidthパラメータを20として作成されます。したがって、pprint出力はそれに応じてフォーマットされます。

{'Dilip': [ 'English',
   'Maths',
   'Science'],
'Kalpana': (50,
   60,
   70),
'Raju': {'English': 50,
   'Maths': 60,
   'Science': 70}}

  1. AlexaをHPプリンターに印刷する方法

    Hewlett-Packardは最近、Web接続されたプリンターに音声制御を追加しました。 Alexa、Cortana、またはGoogle Homeを使用している消費者は、コンピューターを開かなくても一般的なフォームや紙を印刷できるようになりました。現時点ではオプションがいくらか制限されていますが、事前にフォーマットされたドキュメントが必要な場合は、このスキルを使用すると簡単になる可能性があります。 要件 音声コマンドを使用して印刷する1つの方法は、AmazonのAlexaを使用することです。これを行うには、Alexaがサポートされているデバイス(Echo、Echo Dot、Echo Sho

  2. Brother プリンタで印刷できない問題

    兄弟プリンターのユーザーとして、兄弟でプリンターが印刷できない問題