今回は、Pythonで出力時に自動で改行しないようにする方法についてご紹介します。
Pythonで改行される仕組み
Pythonのprint関数やsys.stdout.write関数は、デフォルトで出力の末尾に改行(\n)が付与されることがあります。
とくにprint関数では、デフォルトの引数であるend=”\n”が設定されているため、1回の出力ごとに改行が入る仕組みになっています。
ここでは、改行を防ぐ代表的な方法について、順番に解説します。
print関数のendパラメータで改行を防ぐ方法
Python 3系では、print関数にendパラメータを渡すことで、末尾に自動的に付与される改行を抑制できます。
以下のようにend=””を指定すると、改行されない出力が可能です。
1 2 |
print("Hello", end="") print("World!") |
上記のコードを実行すると、下記のように改行なしで文字列が連続して出力されます。
HelloWorld!
また、必要に応じて区切り文字を指定することも可能です。
1 2 3 |
print("2025", end="-") print("02", end="-") print("17") |
この例では、末尾に改行を入れずに「-」を区切り文字として出力されるため、次のようになります。
2025-02-17
sys.stdout.write()で改行を防ぐ方法
sys.stdout.writeは、引数として与えた文字列をそのまま標準出力に書き込みます。
デフォルトで改行が挿入されないため、改行を細かく制御したい場合に便利です。
1 2 3 4 |
import sys sys.stdout.write("Hello") sys.stdout.write("World!") |
上記を実行すると、改行なしで連結されて出力されます。
HelloWorld!
ただし、sys.stdout.writeは文字列以外をそのまま出力できないため、数値などを出力する際はstr()で変換してください。
また、自動フラッシュ(バッファの画面への反映)が行われない場合もあるので、必要に応じてsys.stdout.flush()を呼び出すことを検討します。
Python 2系の改行抑制について
Python 2系ではprintが文(statement)であり、行末にカンマを付けると改行が抑制されます。
1 2 |
print "Hello", print "World!" |
この場合は下記のように改行されませんが、末尾に半角スペースが自動で挿入されることに注意が必要です。
Hello World!
なお、Python 3系ではこの方法は利用できません。
まとめ
Pythonで出力時に改行を入れたくない場合は、print関数のendパラメータを使う方法が最もシンプルです。
より細かく制御したい場合はsys.stdout.write()を検討し、バッファの扱いや型変換に気を配ります。
バージョンごとに挙動が異なることも踏まえ、場面に合った方法を選択することが大切です。