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') #=> あいうえお (正常)