Pythonで文字列や数値を表示したい場合、print関数を使うことができます。

基本

print関数は文字列などを標準出力に出力します。 カンマで区切って複数の文字列を一度に出力することもできます。 ただし、カンマで区切った箇所はスペースが入ります。 Python2は以下のようになります。

print "A","B","C"   # Python2

Python3の場合、以下のようになります。 Python2ではprint関数にカッコは必要ありませんでしたが、Python3ではカッコが必須になりました。

print("A", "B", "C")   # Python3

Python2とPython3の出力結果は同じで、以下のようになります。

A B C

改行の有無

printではデフォルトで改行します。 改行が不要な場合は明示する必要があります。

Python2でデフォルトの改行を無しにする場合、print行の最後にカンマ "," を付けます。

print "abcd",

Python3の場合は、引数の最後に "end=''" を追加します。

print(’abcd', end='')

数値

数値の書式指定文字列では、整数を表示する場合は"%d"、小数点以下がある場合は"%f"を指定します。 変数が1つの場合、書式指定文字列のあとに、"%が続き、最後に変数がきます。

a = 1234
print("a = %d" % a)

変数が複数の場合、 書書式指定文字列のあとに"%"が続き、そのあとに複数の変数をカンマで区切りで指定して、それらをカッコで囲みます。

a = 1234
b = 98.76
print("a = %d,  b = %f" % (a, b))         #=>  a = 1234,  b = 98.760000

桁数の指定

桁数を指定する場合、変数の型を表す文字の前に数値を指定します。

以下は上側が桁数指定ありで、下側が桁数指定無しの例です。

print("a = %06d,  b = %.3f" % (a, b))     #=>  a = 001234,  b = 98.760
print("a = %d,  b = %3f" % (a, b))         #=>  a = 1234,  b = 98.760
変数aは、6桁の整数で桁数数が足りない場合に0を補うように指定されています。 変数bは、浮動小数点を小数点以下3桁で表示するように指定されています。。

実行結果は以下になります。

a = 001234,  b = 98.760
a = 1234,  b = 98.760000

左寄せ(-)

左寄せで表示する場合は"-"を指定します。

以下は上側が左寄せありで、下側が左寄せ無しの例です。

print("a = %-06d, b = %-.3f" % (a, b))    #=>  a = 1234  , b = 98.760
print("a = %06d,  b = %.3f" % (a, b))         #=>  a = 1234,  b = 98.760000
実行結果は以下になります。
a = 1234  , b = 98.760
a = 001234,  b = 98.760

符号を付ける(+)

以下は上側が符号付きで、下側が符号無しの例です。

print("a = %+06d, b = %+.3f" % (a, b))   #=>  a = +1234 , b = +98.760
print("a = %d,  b = %f" % (a, b))         #=>  a = 1234,  b = 98.760000
実行結果は以下になります。
a = +01234 , b = +98.760
a = 001234,  b = 98.760

文字列

書式設定文字列で文字列を指定する場合、"%s"を使います。

s = u'あいうえお'
print("aiueo: %s" % s)
print("aiueo: %10s" % s)
print("aiueo: %-10s" % s)
実行結果は以下になります。
aiueo: あいうえお
aiueo:      あいうえお
aiueo: あいうえお

文字数指定と右寄せ

文字数指定をすると右寄せになり、"%[文字数]s"の書式で指定します。

s = u'あいうえお'
print("aiueo: %10s" % s)
実行すると以下のように表示されます。
aiueo:      あいうえお

左寄せ

字数指定のデフォルトは右寄せですが、左寄せにする場合、"%-[文字数]s"の書式で可能です。 ただし、指定字数より文字数が多い場合、無視されます。

a = 'ABCDEF'
b = 'abcdef'
print("text: %-10s %-10s" % (a, b))   # 指定した字数の方が多い

print("text: %-3s %-3s" % (a, b))   # 指定した字数の方が少ない
実行すると以下のように表示されます。
text: ABCDEF     abcdef    
text: ABCDEF abcdef

複数行の文字列出力(ヒアドキュメント)

ヒアドキュメントのように、複数行の文字列を出力したい場合、トリプルクォテーション(""")が使えます。

print """frist line
second line
third line"""

文字コード

文字コードによっは文字化けをしますので、その場合、以下のような方法で文字化けを回避します。

文字列定義でuを使用

Windows上では、スクリプトがUTF-8の場合、以下のように日本語文字列を定義します。

# -*- coding: utf8 -*-

str = u'あいうえお'
print str		

Python2は、文字列定義で u が無い場合、decode しないとWindowsでは文字化けしまいます。

# -*- coding: utf8 -*-
str = 'あいうえお'
print str        #=>  縺ゅ>縺・∴縺    (文字化け)
print str.decode('utf8', 'ignore')   #=>  あいうえお (正常)