2013/12/23

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

Python の print は、末尾に改行を追加して出力するのがデフォルトの動作となっています。これを改行なしで出力する方法をご紹介します。

方法は2つあります。
  1. print string,
  2. sys.stdout.write(string)

以下、順に見ていきます。


print string,

ひとつめは print string, を使う方法です。
print "hello",
print "hello",
print "hello"
# => hello hello hello

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


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 などを使ってフォーマットした上で渡すようにしましょう。

以上です。


上記の方法はあくまでも Python2 でのやり方です。 Python3 の場合は、 print が「 print 文」から「 print 関数」へと変わり、それに合わせて、末尾に追加される文字を end オプションで指定できるようになりました。

Python3 で改行を入れてほしくない場合は次のようにするとよいようです。
# case in Python 3
print("hello", end="")
print("hello", end="")
# => hellohello

ちなみに、 Python2.6 以降であれば、次の一文を宣言すると、 print 文を上書きする形で Python3 の print 関数を使うことができるようになります。
# case in Python 2.6~
from __future__ import print_function
print("hello", end="")
print("hello", end="")
# => hellohello


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

Python Tips: 改行をうまく扱いたい


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

Python 3 の print() 関数の使い方
Python 2 の print 文の使い方


参考
Input and Output - 公式ドキュメント Python Tutorial
print function - Python公式ドキュメント

0 件のコメント: