Python Works

Pythonで色々プログラミングする

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