ここでは print() の応用的な使い方 をさらに深掘りして、
実務や学習の場面でもよく使うテクニックをわかりやすく解説します。
目次
- 変数やフォーマット文字列の復習
- 列幅をそろえて表を整形する関数
tabulateライブラリで美しい表を出力print()からloggingへの移行(実務編)
1. フォーマット文字列の復習(f文字列)
print() で変数を見やすく出すときは、
f文字列(フォーマット文字列) を使うのが基本です。
name = "Alice"
age = 25
print(f"{name} さんは {age} 歳です。")
Python👉 出力:
Alice さんは 25 歳です。
書式を指定して整える
pi = 3.14159265
print(f"円周率は {pi:.3f} です") # 小数点以下3桁
Python円周率は 3.142 です
2. 列幅をそろえて表を整形する関数
複数行のデータを整列して出力したい場合、
列幅を自動でそろえる関数を自作してみましょう。
例:自動列幅整形関数
def print_table(rows):
# 各列の最大幅を計算
col_widths = [max(len(str(cell)) for cell in col) for col in zip(*rows)]
for row in rows:
# 各列を左寄せで整形して出力
print(" | ".join(f"{str(cell):<{w}}" for cell, w in zip(row, col_widths)))
# 使用例
data = [
["名前", "年齢", "出身地"],
["Alice", 25, "Tokyo"],
["Bob", 31, "Osaka"],
["Charlie", 29, "Nagoya"],
]
print_table(data)
Python👉 出力結果:
名前 | 年齢 | 出身地
Alice | 25 | Tokyo
Bob | 31 | Osaka
Charlie | 29 | Nagoya
🔍 ポイント
zip(*rows)で列ごとにまとめる(転置)。max(len(str(cell)) ...)で最大文字幅を算出。:<{w}で左寄せ・幅指定のフォーマットを使う。
3. tabulate ライブラリを使う(プロ向け)
手動で整形するのは大変なので、
外部ライブラリ tabulate を使うと一瞬で整った表が出せます。
🔧 インストール
pip install tabulate
使用例
from tabulate import tabulate
data = [
["Alice", 25, "Tokyo"],
["Bob", 31, "Osaka"],
["Charlie", 29, "Nagoya"]
]
headers = ["名前", "年齢", "出身地"]
print(tabulate(data, headers=headers, tablefmt="grid"))
Python👉 出力例:
+----------+------+----------+
| 名前 | 年齢 | 出身地 |
+----------+------+----------+
| Alice | 25 | Tokyo |
| Bob | 31 | Osaka |
| Charlie | 29 | Nagoya |
+----------+------+----------+
他にも "plain", "pipe", "fancy_grid" など多くのフォーマットが選べます。
4. print() から logging への移行(実務で必須)
スクリプトが大きくなると、print() でのデバッグ出力は管理が難しくなります。
そこでよく使われるのが logging モジュール です。
基本的な使い方
import logging
# ログ設定
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
)
name = "Alice"
logging.info(f"{name} の処理を開始します")
logging.warning("データの一部が欠損しています")
logging.error("ファイルが見つかりません!")
Python👉 出力例:
2025-11-05 17:00:12 [INFO] Alice の処理を開始します
2025-11-05 17:00:12 [WARNING] データの一部が欠損しています
2025-11-05 17:00:12 [ERROR] ファイルが見つかりません!
🔍 メリット
- 出力レベル(INFO, WARNING, ERRORなど)で分類可能
- ファイル出力・フィルタリングも簡単
- 実運用スクリプトに最適
✨ まとめ
| 段階 | 方法 | 特徴 |
|---|---|---|
| 基本 | print(f"{var}") | 手軽で初心者向け |
| 応用 | 書式指定 (:<10, :.2f) | 整列・数値表示をきれいに |
| 中級 | tabulate() | 表データを自動整形 |
| 上級 | logging | 実務向け・ログ管理に強い |
