Python入門 - 文字列のフォーマット出力
フォーマット出力とは
今までは、print関数を利用して文字列や数字を個別に出力していきました。しかし、文字列を数値を組み合わせて表示したい場面はたくさんあります。例えば、次のような文字列です。
「date 10/2 time 3:30」
そのように、様々でデータを文字列に変換する仕組みをフォーマット出力と言います。データを指定した書式(フォーマット)で出力するからです。
Pythonには、フォーマット出力のための仕組みがいくつかありますが、ここではstr.format()を利用したフォーマット出力について説明します。
str.format
str.formatは文字列に用意された関数です。str.format関数に渡された引数を、様々な書式で文字列に変換します。
まずは、基本的な使い方をみてみましょう。
サンプルコード
month = 10
day = 2
hour = 3
min = 30
print('date {}/{} time {}:{}'.format(month, day, hour, min))
実行結果
date 10/2 time 3:30
「{ }」の中カッコの部分に、formatに渡した引数が 順番に文字列に変換されて入ります。この「{ }」は番号をつけて順番を指定することもできます。
サンプルコード
month = 10
day = 2
hour = 3
min = 30
print('date {2}/{1} time {0}:{3}'.format(month, day, hour, min))
実行結果
date 3/2 time 10:30
フォーマット指定子
str.formatでは、引数として渡したデータを、どのように文字列に変換するかを詳細に指定するdことができます。これは、「フォーマット指定子」を利用します。
サンプルコード
import math
print('pi={0}'.format(math.pi))
print('pi={0:.4}'.format(math.pi))
実行結果
pi=3.141592653589793
pi=3.142
このサンプルコードのように、フォーマット指定子は「: (コロン)」の後ろにしています。フォーマット指定子には、いくつか種類があります。
まずは、幅指定と詰め文字の指定です。
サンプルコード
print('left {0:<10}'.format('format')) #左詰
print('center {0:^10}'.format('format')) #中央寄せ
print('right {0:>10}'.format('format')) #右詰
print('fill {0:->10}'.format('format')) #右詰で「-」で埋める
print('zero fill {0:0>10}'.format('123435')) #右詰で「0」で埋める
実行結果
left format
center format
right format
fill ----format
zero fill 0000012345
次に数値の指定です。
サンプルコード
print("10進数 {0:d}, 16進数 {0:x}, 8進数 {0:o}, 2進数 {0:b}".format(30))
print("小数4桁 {0:.4f}".format(123.456789))
実行結果
10進数 30, 16進数 1e, 8進数 36, 2進数 11110
小数4桁 123.4568