Pythonの print() 関数は、プログラムの実行結果や変数の内容を確認するために頻繁に用いられます。デフォルトでは、print() は複数の引数を半角スペースで区切り、出力の最後に自動で改行を追加します。
しかし、時にはこの区切り文字を変更したい(例えばCSV形式にしたい)場合や、改行させたくない(例えば処理の進捗を1行に表示したい)場合があります。
この記事では、print() 関数の出力をカスタマイズするための2つの重要なオプション引数、sep と end について解説します。
sep:区切り文字の指定
print() 関数に複数の引数を渡すと、デフォルトではそれらがスペースで区切られます。
item_code = "A-001"
quantity = 50
location = "Warehouse-3"
# デフォルト(スペース区切り)
print(item_code, quantity, location)
実行結果:
A-001 50 Warehouse-3
sep (separator) 引数を指定すると、この区切り文字を任意のものに変更できます。例えば、データをパイプ記号(|)やカンマ(,)で区切りたい場合に使用します。
# sep='|' を指定
print(item_code, quantity, location, sep="|")
# sep=',' を指定(CSV形式など)
print(item_code, quantity, location, sep=",")
実行結果:
A-001|50|Warehouse-3
A-001,50,Warehouse-3
end:終端文字の指定
print() 関数は、デフォルトで出力の最後に改行文字(\n)を追加します。そのため、print() を連続して呼び出すと、出力は複数行にわたります。
print("--- 処理開始 ---")
print("データ検証中...")
print("--- 処理完了 ---")
実行結果:
--- 処理開始 ---
データ検証中...
--- 処理完了 ---
end 引数を指定すると、この終端文字を変更できます。特に end=""(空文字列)を指定すると、改行が抑制され、後続の print() の出力が同じ行に続くようになります。
これは、処理の進捗を1行で表示したい場合に便利です。
print("--- 処理開始 ---", end="")
print("データ検証中...", end="")
print("--- 処理完了 ---")
実行結果:
--- 処理開始 ---データ検証中...--- 処理完了 ---
end にスペースを指定して、読みやすくすることも可能です。
print("ロード中:", end=" ")
modules = ["Core", "Graphics", "Network"]
for mod in modules:
print(f"[{mod}]", end=" ") # 各モジュールをスペース区切りで出力
print("...完了") # 最後に改行
実行結果:
ロード中: [Core] [Graphics] [Network] ...完了
sep と end の併用
sep と end は同時に指定することもできます。
例えば、複数のログ情報をハイフンで連結し、最後は改行ではなく特定のマーカー([EOF]など)で締めくくる場合、以下のように記述できます。
log_level = "INFO"
module_name = "AuthService"
message = "Login successful"
# sepで区切り文字を、endで終端文字を指定
print(log_level, module_name, message, sep=" - ", end=" [END_LOG]\n")
実行結果:
INFO - AuthService - Login successful [END_LOG]
まとめ
print() 関数の sep と end 引数を使うことで、出力のフォーマットを柔軟に制御できます。
sep: 複数の引数を渡した際の区切り文字を指定します。(デフォルト: (スペース))end: 出力の終端文字を指定します。(デフォルト:\n(改行))
これらの引数を活用することで、ログ出力やデータ整形、進捗表示など、様々な場面で意図した通りの出力形式を実現できます。
