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