format関数
一つの数値・文字列の書式を設定する場合、format
組み込み関数が使える。引数はリテラルでも変数でもよい。
1 2 3 4 5 6 |
print("Hexadecimal of 255 is " + format(255, '0x')) print("1/7 is approximately " + format(1/7, 'e')) # Hexadecimal of 255 is ff # 1/7 is approximately 1.428571e-01 |
formatメソッド
文字列に対するformat
メソッドでも数値・文字列の書式を設定できる(書式設定の書き方は後述)。引数はリテラルでも変数でもよい。
1 2 3 4 5 |
print("Hexadecimal of 255 is {:0x}".format(255)) print("Hexadecimal of 255 is {:e}".format(1/7)) # Hexadecimal of 255 is ff # Hexadecimal of 255 is 1.428571e-01 |
format
メソッドは複数の数値・文字列を扱える。
1 2 3 |
print("My name is {} and my age is {}".format("Jane", 38)) # My name is Jane and my age is 38 |
位置引数として整数を指定し、繰り返して利用することが可能。
1 2 3 4 |
print("The suits of handed cards were {0}, {1}, {2}, {1}, {3}" \ .format("Spade", "Club", "Diamond", "Heart".)) # The suits of handed cards were Spade, Club, Diamond, Club, Heart. |
キーワード引数として文字列を指定可能。
1 2 3 |
print("{name} is {age} years old.".format(name="Kark", age=25)) # Kark is 25 years old. |
リストを引数にするときは整数の位置引数とリスト内の引数で指定する。複数のリストを指定するときは位置引数を0、1…と対応させていく。
1 2 3 4 5 6 7 |
result1 = ["Head", "Tail"] result2 = ["Head", "Head"] print("First result was {0[0]} and {0[1]}.\nSecond was {1[0]} and {1[1]}.".\ format(result1, result2)) # First result was Head and Tail. # Second was Head and Head. |
辞書を引数にするときは整数の位置引数とキーで指定する。キーはクォートで囲まない。
1 2 3 4 5 6 |
person1 = {'name': "John", 'age': 20} person2 = {'name': "Kate", 'age': 32} print("{0[name]} is {0[age]} years old) and {1[name]} is {1[age]} years old.".\ format(person1, person2)) # John is 20 years old) and Kate is 32 years old. |
書式設定する場合は、[位置引数]:[書式設定文字列]
の形式にする。位置引数を指定しない場合でも':'
は必要。
1 2 3 4 5 |
print("1/4 is {0:f} and 1/5 is {1:e}".format(1/4, 1/5)) print("1/4 is {:f} and 1/5 is {:e}".format(1/4, 1/5)) # 1/4 is 0.250000 and 1/5 is 2.000000e-01 # 1/4 is 0.250000 and 1/5 is 2.000000e-01 |
書式設定文字列
formatメソッド
位置引数を省略して書式設定文字列を各場合{:[書式設定文字列]}
のように':'
を省略することができない。
文字列
{:[</^/>][width]}
で左寄せ/中央ぞろえ/右寄せと、全体の幅width
を指定。
1 2 3 4 5 6 7 8 9 |
str = "Python" print("left :{:<10}".format(str)) print("center:{:^10}".format(str)) print("right :{:>10}".format(str)) # left :Python # center: Python # right : Python |
{:[char][</^/>][width]}
で空白部分をchar
の文字でパディング
1 2 3 4 5 6 7 |
print("left :{:*<10}".format(str)) print("center:{:*^10}".format(str)) print("right :{:*>10}".format(str)) # left :Python**** # center:**Python** # right :****Python |
整数
整数の書式は幅の値に'd'
を続けて書く。
1 2 3 4 5 6 7 |
print("{:*<10d}".format(123)) print("{:*^10d}".format(123)) print("{:*>10d}".format(123)) # 123******* # ***123**** # *******123 |
整数を2進数、8進数、16進数で表現できる。
1 2 3 4 5 6 7 8 9 10 11 |
print("{:d}".format(255)) print("{:b}".format(255)) print("{:o}".format(255)) print("{:x}".format(255)) print("{:X}".format(255)) # 255 # 11111111 # 377 # ff # FF |
基数を指定するとき、'#'
を前置すると0b、0o、0xが前に付加される。以下の例では、同時に幅も指定している。2進数表現の場合は0bを付加すると設定幅を超えるので、そのまま表示されている。
1 2 3 4 5 6 7 8 9 |
print("{:#8b}".format(255)) print("{:#8o}".format(255)) print("{:#8x}".format(255)) print("{:#8X}".format(255)) # 0b11111111 # 0o377 # 0xff # 0XFF |
浮動小数点
浮動小数点形式の実数の書式は、小数部の桁数だけ指定するときは".3f"
のように、幅を設定するときは"10.3f"
のように指定する。
1 2 3 4 5 6 7 |
print("{:*<10.3f}".format(12.3454)) print("{:*^10.3f}".format(12.3455)) print("{:*>10.3f}".format(12.3456)) # 12.345**** # **12.345** # ****12.346 |
固定小数点
固定小数点形式の実数の書式は、小数部の桁数だけ指定するときは".5e"
のように、幅を指定するときは"15.5e"
のように指定する。
1 2 3 4 5 6 7 8 |
# 固定小数点型 print("{:*<15.3e}".format(1.2344e-10)) print("{:*^15.3e}".format(1.2345e-10)) print("{:*>15.3e}".format(1.2346e-10)) # 1.234e-10****** # ***1.234e-10*** # ******1.235e-10 |
符号の表示方法
正の数値に対して'+'
を表示させるときは、数値書式の前に'+'
をつけ、正の時にスペースを表示させるときには' '
をつける。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
print("{:*>10d}".format(123)) print("{:*>10d}".format(-123)) print("{:*>+10d}".format(123)) print("{:*>+10d}".format(-123)) print("{:*> 10d}".format(123)) print("{:*> 10d}".format(-123)) # *******123 # ******-123 # ******+123 # ******-123 # ****** 123 # ******-123 |
指定した幅の先頭に符号等を表示し、右寄せの数値との間をパディングする方法。
1 2 3 4 5 6 7 8 9 |
print("{:*=10.3f}".format(12.345)) print("{:*=10.3f}".format(-12.345)) print("{:*=+10.3f}".format(12.345)) print("{:*= 10.3f}".format(12.345)) # ****12.345 # -***12.345 # +***12.345 # ***12.345 |
format関数
基数表示
数値の基数を指定して、10進数、2進数、8進数、16進数を表示。16進数は英文字の大文字/小文字を選択可能。
1 2 3 4 5 |
print(format(255, 'd')) #255 print(format(255, 'b')) #11111111 print(format(255, 'o')) #377 print(format(255, 'x')) #ff print(format(255, 'X')) #FF |
位置揃え
文字列や数値を固定幅の中で左寄せ、センタリング、右寄せ(センタリングで左右幅が異なるときは、左に1桁寄せられる)。
1 2 3 4 5 6 7 |
print(format("Python", '<10s')) #Python print(format("Python", '^10s')) # Python print(format("Python", '>10s')) # Python print(format(123, '<6d')) #123 print(format(123, '^6d')) # 123 print(format(123, '>6d')) # 123 |
パディング
数値を固定幅で表示した場合のデフォルトは右寄せ。'[任意の文字]=’で空白をパディング。特にゼロで埋める場合は’=’を省略できる。
1 2 3 4 |
print(format(123, '6d')) # 123 print(format(123, '*=6d')) #***123 print(format(123, '0=6d')) #000123 print(format(123, '06d')) #000123 |
2、8、16の基数に対して固定幅で0でパディングする例。
1 2 3 4 |
print(format(15, '08b')) #00001111 print(format(15, '04o')) #0017 print(format(143, '04x')) #008f print(format(143, '04X')) #008F |
+符号
‘+’を指定すると、正の値の時に+記号がつく。
1 2 3 4 |
print(format(456, '+6d')) # +456 print(format(-456, '+6d')) # -456 print(format(-456, '+06d')) #-00456 # '0+6d'はエラー |
カンマ区切り
3桁ごとのカンマ区切り指定。
1 2 |
print(format(123456789, ',')) #123,456,789 print(format(123456789, '15,')) # 123,456,789 |
固定小数点実数
固定小数点の小数部の桁数を’.[桁数]f’で指定する。
1 2 |
print(format(123.456789, '.3f')) #123.457 print(format(123.456789, '.10f')) #123.4567890000 |
浮動小数点実数
浮動小数点の小数部の桁数を’.[桁数]e’で指定する。
1 2 3 4 |
print(format(123.456, '.0e')) #1.e+02 print(format(123.456, '.1e')) #1.2e+02 print(format(123.456, '.2e')) #1.23e+02 print(format(123.456, '.3e')) #1.235e+02 |
実数全体の桁数
小数部の桁数ではなく全体の桁数を’.[桁数]g’で指定する。全体の桁数が整数部の桁数以上のときは、固定小数点で表示される。
1 2 3 4 5 6 |
print(format(123.456, '.0g')) #1e+02 print(format(123.456, '.1g')) #1e+02 print(format(123.456, '.2g')) #1.2e+02 print(format(123.456, '.3g')) #123 print(format(123.456, '.4g')) #123.5 print(format(123.456, '.5g')) #123.46 |