Python Tips: 改行なしで文字列を出力したい

Python の print はデフォルトで末尾に改行を追加して出力します。 これを末尾に改行を加えずに出力する方法をご紹介します。

  • Python 3 の場合
  • Python 2 の場合

Python 3 の場合

Python 3 の print は Python 2 とは違い print() 関数です。 print() 関数はデフォルトで末尾に改行を追加しますが、引数 end を使うと末尾に出力する文字を変更することができます。 end に空文字 "" を渡せば改行が追加されません。

print("hello", end="")
print("hello", end="")
# => hellohello

end を指定せずにふつうに使用すれば改行が追加されます( end のデフォルト値が改行文字 \n になっています)。

print("hello")

Python 2 の場合

Python 2 で改行なしで出力する方法は 2 つあります。

  1. print string,
  2. sys.stdout.write(string)

1. print string,

ひとつめは print string, を使う方法です。

print "hello",
print "hello",
print "hello"
# => hello hello hello

print 文の末尾に , をつけると、改行が半角スペースに置き換えられます。これは、いくつもの変数をまとめて表示する際に使える , を利用した方法です。

print "hami", "gaki", "ko"
# => hami gaki ko

2. sys.stdout.write(string)

もうひとつは sys.stdout.write() を使う方法です。

import sys

sys.stdout.write("hello")
sys.stdout.write("hello")
sys.stdout.write("hello")
# => hellohellohello

こちらの方法だと半角スペースが挿入されることもなく、渡した文字列がただそのまま表示される形となります。空白もコントロールしたい場合はこちらを使うのがよろしいかと思います。

ただし、 sys.stdout.write()print 文と異なり、引数に文字列以外を受け取ることができません。文字列になっていないものは str などを使って事前に文字列型に変換した上で渡す必要があります。

ちなみに、 Python 2 でも Python 2.6 以降であれば、次の一行を追加すると Python 3 と同等の print() 関数を使えるようになります。

from __future__ import print_function
from __future__ import print_function

print("hello", end="")
print("hello", end="")
# => hellohello

ということで、 Python で末尾の改行なしで文字列を出力する方法についてでした。

関連記事

改行の扱い方を全般的に知りたい方にはこちらの記事が参考になるかもしれません:

print に興味のある方にはこちらの記事も参考になるかもしれません:

参考