http://ginstrom.com/scribbles/2007/09/04/pretty-printing-a-table-in-python/から参照されているこのコードブロックが役立ちます。
import locale
locale.setlocale(locale.LC_NUMERIC, "")
def format_num(num):
"""Format a number according to given places.
Adds commas, etc. Will truncate floats into ints!"""
try:
inum = int(num)
return locale.format("%.*f", (0, inum), True)
except (ValueError, TypeError):
return str(num)
def get_max_width(table, index):
"""Get the maximum width of the given column index"""
return max([len(format_num(row[index])) for row in table])
def pprint_table(out, table):
"""Prints out a table of data, padded for alignment
@param out: Output stream (file-like object)
@param table: The table to print. A list of lists.
Each row must have the same number of columns. """
col_paddings = []
for i in range(len(table[0])):
col_paddings.append(get_max_width(table, i))
for row in table:
# left col
print >> out, row[0].ljust(col_paddings[0] + 1),
# rest of the cols
for i in range(1, len(row)):
col = format_num(row[i]).rjust(col_paddings[i] + 2)
print >> out, col,
print >> out
table = [["", "taste", "land speed", "life"],
["spam", 300101, 4, 1003],
["eggs", 105, 13, 42],
["lumberjacks", 13, 105, 10]]
import sys
out = sys.stdout
pprint_table(out, table)
あなたの場合、行、列、配置、およびエントリの入力をテーブルに収集しているので、それらをプラグインしてtable
変数を作成できます。
- len(table [0])は、列の数に相当します(「y軸」ラベルでカウントされないように-1、テーブルインデックスとも呼ばれます)。
- len(table)は、行数に相当します(テーブルヘッダーでカウントされないように-1)。
- col_padding(alignment)は、特定の列を計算する際に、メソッドを使用して動的に計算さ
rjust
れljust
ます。
- また、テーブルリストの各要素は、標準のPythonリスト構文を使用して更新できます。