[Python] 文字列にデータを代入する際によく使う情報だけの整理

print文の例

文字列に値を入れる際に書式を指定する方法のうち、個人的によく使うものだけ整理しました。

ご存知の通り、%を使うスタイルと{}を使うスタイルがあるので、それぞれについて記載します。

参考にしたのは下記の書籍です。

入門 Python 3
Pythonが誕生して四半世紀。データサイエンスやウェブ開発、セキュリティなどさまざまな分野でPythonの人気が急上昇中です。プログラミング教育の現場でもCに代わってPythonの採用が増えてきています。本書は、プログラミングが初めてという人を対象に書かれた、Pythonの入門書です。前提とする知識は特にありません。...

対象のフォーマット

本記事で扱うのは下記のフォーマットです。

  1. 10進float
  2. 小数点以下指定
  3. 右揃え
  4. 左揃え

小数点以下は例として2桁とします。

変数の定義は下記の通りとします。

value1 = 1.23456
value2 = 0.99999

%を使うスタイル

型の指定

代入する型をアルファベット1字で指定します。

  • f: 10進float
  • d: 10進整数
  • s: 文字列
  •  x: 16進整数
  • o: 8進整数

などが代表的です。他にはeで指定形式float, gで10進floatまたは指数形式floatになります。

10進float

%で代入する方法です。複数渡す場合はテキストの後ろの%でかっこに入れて渡します。

print("Value is %f." %value1)
print("Value1 is %f, value2 is %f." %(value1, value2))
Value is 1.234560.
Value1 is 1.234560, value2 is 0.999990.

小数点以下指定

小数点以下は

print("Value1 is %.2f." %value1)
Value1 is 1.23.

右揃え

print("Value1 is %10.2f." %value1)
Value1 is 1.23.

左揃え

print("Value1 is %-10.2f." %value1)
Value1 is 1.23 .

上から順に見ていけば、特に説明は必要ではないかと思います。

%を使うスタイルのまとめ

  • %の後ろに変数を代入する
  • 型をアルファベットで指定
  • 小数点以下はピリオドと数字で示し、型の前に入れる
  • %とピリオドの間で文字の幅を指定
  • 正負で右揃えか左揃えかを指定

リテラルの%

%を変数の代入を示すのに使用するので、普通に%を表示させたいときは%%とします。

# リテラルの%
print("Value1 is %.2f%%." %value1)
Value1 is 1.23%.

{}を使うスタイル

型の指定

型の指定は%を使うスタイルと同様です。代表的なものは下記の通りです。

  • f: 10進float
  • d: 10進整数
  • s: 文字列
  •  x: 16進整数
  • o: 8進整数

他にはeで指定形式float, gで10進floatまたは指数形式floatになります。

10進float

複数渡すときもここで確認しておきます。

print("Value1 is {}.".format(value1))
print("Value1 is {0}, Value2 is {1}.".format(value1, value2))
print("Value1 is {0:}.".format(value1))
Value1 is 1.23456.
Value1 is 1.23456, Value2 is 0.99999.
Value1 is 1.23456.

{}の中の数字で何番目の変数が入るかを指定することができます。省略した場合、順番に代入されます。
3パターン示したのは以降との比較を目的としています。

小数点以下指定

print("Value1 is {:.2f}.".format(value1))
Value1 is 1.23.

コロンの後ろで書式指定、と覚えておけば大丈夫です。
変数が複数ある場合、コロンの左に数字を割り当て、何番目の変数を代入するか指定することができます。

右揃え

右揃え、左揃えと文字数指定には”<“と”>”を使用します。”^”を使用して中央揃えにすることもできます。
文字の幅を確保して、詰め方を指定する、と考えるのが自然です。

print("Value1 is {:<10.2f}.".format(value1))
Value1 is 1.23.

左揃え

左揃えも右揃えと同様の考え方です。

print("Value1 is {:<10.2f}.".format(value1))
Value1 is 1.23 .

パディング

おまけです。formatを使用すると、下記のようにして空白の代わりに文字を空白埋めに使用することができます。

print("Value1 is {:!<10.2f}.".format(value1))
Value1 is 1.23!!!!!!.

{}を使うスタイルのまとめ

  • コロンの左に対応する変数の順序(省略可)、右に書式
  • 型をアルファベットで指定
  • 小数点以下は型の前でピリオドと数字で指定
  • 小数点指定の前で文字列幅を指定
  • 文字列幅の前で<, ^, >で左揃え、中央揃え、右揃えを指定。

まとめ

Pythonでの書式指定のうち、特によく使うものを自分が分かりやすいようにまとめました。

使用頻度が多いものは理解して覚えてしまうと良さそうです。

参考文献

入門Python3

入門 Python 3
入門 Python 3