Python でフォーマットされたテーブルを作成する
様々な揃え方について学習したので、それらを活用してフォーマットされたテーブルを作成してみましょう。テーブルは、構造化されたデータを分かりやすい形式で表示する一般的な方法であり、適切な揃え方は、表形式の情報効果的に提示するために不可欠です。
固定幅列を持つシンプルなテーブル
固定幅列を使用してシンプルなテーブルを作成してみましょう。
/home/labex/project ディレクトリに simple_table.py という名前の新規ファイルを作成します。
## simple_table.py
print("シンプルな固定幅テーブル")
print("-" * 50)
## データを定義
header = ["名前", "年齢", "都市", "職業"]
data = [
["John Smith", 34, "ニューヨーク", "医師"],
["Sarah Johnson", 28, "サンフランシスコ", "エンジニア"],
["Michael Brown", 42, "シカゴ", "教師"],
["Emily Davis", 31, "ボストン", "科学者"]
]
## ヘッダーを出力
print(f"{header[0]:<20} {header[1]:<8} {header[2]:<15} {header[3]:<15}")
print("-" * 60)
## 行を出力
for row in data:
print(f"{row[0]:<20} {row[1]:<8} {row[2]:<15} {row[3]:<15}")
- ファイルを保存し、実行します。
python3 ~/project/simple_table.py
- 次のような整然としたテーブルが表示されます。
シンプルな固定幅テーブル
--------------------------------------------------
名前 年齢 都市 職業
------------------------------------------------------------
John Smith 34 ニューヨーク 医師
Sarah Johnson 28 サンフランシスコ エンジニア
Michael Brown 42 シカゴ 教師
Emily Davis 31 ボストン 科学者
複数の揃えタイプを持つ動的なテーブル
データの種類によって、最適な揃えスタイルは異なります。例えば、テキストは左揃え、数値は右揃えにするのが一般的です。混合揃えを使ったより洗練されたテーブルを作成してみましょう。
/home/labex/project ディレクトリに dynamic_table.py という名前の新規ファイルを作成します。
## dynamic_table.py
print("混合揃えを持つ動的なテーブル")
print("-" * 50)
## データを定義
header = ["製品", "価格", "数量", "合計"]
products = [
["ノートパソコン", 1299.99, 3, 3899.97],
["マウス", 24.50, 10, 245.00],
["モニター", 349.95, 2, 699.90],
["キーボード", 49.99, 5, 249.95],
["ヘッドホン", 89.95, 4, 359.80]
]
## 列幅をコンテンツに基づいて計算
col_widths = [
max(len(str(header[0])), max(len(str(row[0])) for row in products)) + 2,
max(len(str(header[1])), max(len(f"${row[1]:.2f}") for row in products)) + 2,
max(len(str(header[2])), max(len(str(row[2])) for row in products)) + 2,
max(len(str(header[3])), max(len(f"${row[3]:.2f}") for row in products)) + 2
]
## ヘッダーを出力
print(f"{header[0]:<{col_widths[0]}}"
f"{header[1]:>{col_widths[1]}}"
f"{header[2]:>{col_widths[2]}}"
f"{header[3]:>{col_widths[3]}}")
print("-" * sum(col_widths))
## 適切な揃えで行を出力
for product in products:
print(f"{product[0]:<{col_widths[0]}}",
f"${product[1]:.2f}".rjust(col_widths[1]),
f"{product[2]}".rjust(col_widths[2]),
f"${product[3]:.2f}".rjust(col_widths[3]))
## 集計を出力
total_quantity = sum(product[2] for product in products)
total_cost = sum(product[3] for product in products)
print("-" * sum(col_widths))
print(f"{'合計':<{col_widths[0]}}",
f"".rjust(col_widths[1]),
f"{total_quantity}".rjust(col_widths[2]),
f"${total_cost:.2f}".rjust(col_widths[3]))
- このコードには修正が必要なエラーがあります。価格と合計列のフォーマットが正しくありません。修正しましょう。
## dynamic_table.py - 修正版
## ... (上記コードと同じ)
- 修正したファイルを保存し、実行します。
python3 ~/project/dynamic_table.py
- 初心者にも分かりやすく、より堅牢にするために、この例を簡略化しましょう。
## dynamic_table.py - 簡略化版
## ... (上記コードと同じ)
- この簡略化されたバージョンを前のファイルに上書きし、実行します。
python3 ~/project/dynamic_table.py
- 次のようなフォーマットされたテーブルが表示されます。
混合揃えを持つ動的なテーブル
--------------------------------------------------
製品 価格 ($) 数量 合計 ($)
-------------------------------------------------------
ノートパソコン 1299.99 3 3899.97
マウス 24.50 10 245.00
モニター 349.95 2 699.90
キーボード 49.99 5 249.95
ヘッドホン 89.95 4 359.80
-------------------------------------------------------
合計 24 5454.62
財務報告書の作成
次に、より実用的な例として、読みやすさを高めるために揃え方を使った財務報告書を作成してみましょう。
/home/labex/project ディレクトリに financial_report.py という名前の新規ファイルを作成します。
## financial_report.py
## ... (上記コードと同じ)
- ファイルを保存し、実行します。
python3 ~/project/financial_report.py
- 整然とした列揃えで構成された包括的な財務報告書が表示されます。
月次財務報告書
============================================================
収益計算書
----------------------------------------
項目 金額 ($)
----------------------------------------
給与 5000.00
フリーランス仕事 1200.50
投資 450.75
その他収入 300.00
----------------------------------------
総収入 6951.25
費用計算書
----------------------------------------
項目 金額 ($)
----------------------------------------
家賃 1500.00
光熱費 250.30
食料品 600.45
交通費 200.00
保険 300.00
娯楽 150.25
貯蓄 800.00
雑費 300.00
----------------------------------------
総費用 4101.00
月次集計
----------------------------------------
総収入 6951.25
総費用 4101.00
----------------------------------------
純利益 2850.25
この月は2850.25ドルの貯蓄がありました!
この例は、適切な揃え方が複雑な財務情報をより読みやすく理解しやすくする方法を示しています。
主要なポイント
これらの例を通して、以下のことを学びました。
- 一貫した揃え方でシンプルな固定幅テーブルを作成する
- データの種類に基づいて異なる揃えタイプ(テキストは左揃え、数値は右揃え)を適用する
- 明確な視覚的構成を持つ実用的な現実世界のレポートを作成する
- 出力に対する正確な制御を実現するために文字列フォーマットメソッドを使用する
これらのスキルは、コンソール出力だけでなく、レポートの作成、ログファイルの作成、またはテキストベースのフォーマットでデータを提示する場合にも役立ちます。