桁数、文字数指定、位置揃え、ゼロ埋め、など

投稿者: | 2022-03-15

目次

USAGE

metoro_area = [
    ('Tokyo', 'JP', 36.933, (35.689722, 139.691667)),
    ('Delhi NCR', 'IN', 21.935, (28.613889, 77.20889)),
    ('Mexico City', 'MX', 20.142, (19.43333, -99.133333)),
    ('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
    ('Sao Paulo', 'BR', 19.649, (-23.547778, -46.635833)),
]

print('{:15} | {:^9} | {:^9}'.format('', 'lat.', 'long.'))
fmt = '{:15} | {:9.4f} | {:9.4f}'
for name, cc, pop, (latitude, longitude) in metoro_area:
    if longitude <= 0:
        print(fmt.format(name, latitude, longitude))

数値の出力桁数を指定する

print(f'''year | sales
-----+-------------
2015 | {sales[0]:}
2016 | {sales[1]:}
2017 | {sales[2]:}
2018 | {sales[3]:}
''')

数値に桁区切りを入れる

print(f'''year | sales
-----+-------------
2015 | {sales[0]:,}
2016 | {sales[1]:,}
2017 | {sales[2]:,}
2018 | {sales[3]:,}
''')

表示する文字数を指定する

print(f'''year | sales
-----+-------------
2015 | {sales[0]:12,}
2016 | {sales[1]:12,}
2017 | {sales[2]:12,}
2018 | {sales[3]:12,}
''')

文字のアラインメント(位置揃え)

  • 出力桁数を指定すると、自動で数値は右寄せ、文字列は左寄せになる
# 上記を応用すると

print(f'''{"year":^7}|{"sales":^12}
-----------------------
{2015:^7}|{sales[0]:12,d}
{2016:^7}|{sales[1]:12,d}
{2017:^7}|{sales[2]:12,d}
{2018:^7}|{sales[3]:12,d}
''')

ゼロパディング

  • 桁数の前に0を付けると空白部分がゼロで埋まる
    • 例)0-9桁、0-10桁
  • 今回はあくまで表示上でゼロ埋めしているだけだが、文字列としてゼロ埋めしたい場合は以下を利用
value = 1000

print(f'{value}|{value:09}|')
print(f'{value}|{value:010}|')
# 1000|000001000|
# 1000|0000001000|
print(f'|{"左寄せ":#<8}|{"中央寄せ":%^8}|{"右寄せ":_>8}|')

# |左寄せ#####|%%中央寄せ%%|_____右寄せ|

参考)zfill

  • 数値を桁合わせして表示したい場合
>>>'33'.zfill(6)
'000033'

fromat と f文字列 での桁数表記

  • round等と異なり、丸めることはしてない。単に「見える部分、見え方」を変えているだけ。

num = 99.12345

結果format表記f文字列表記
f'{}'と打鍵後、中身を入力
・num=とすると、より分かりやすい
99.1print('{:.1f}'.format(num))print(f'{num:.1f}')
99.123print('{:.3f}'.format(num))print(f'{num:.3f}')
99.12345print('{:.5f}'.format(num))print(f'{num:.5f}')
99.1234500print('{:.7f}'.format(num))print(f'{num:.7f}')
__99.12345print('{:10}'.format(num))
10文字分(小数点なども含む)
print(f'{num:10f}')
0099.12345print('{:010}'.format(num))print(f'{num:010}')

num = 10000.123

結果format表記f文字列表記
10000.123print('{}'.format(num))print(f'{num:}')
10,000.123print('{:,}'.format(num))print(f'{num:,}')
10,000.1print('{:,.1f}'.format(num))print(f'{num:,.1f}')
__10,000.1print('{:10,.1f}'.format(num))print(f'{num:10,.1f}')

roundは四捨五入ではない

f = 123.456

print(round(f))
# 123

print(type(round(f)))
# <class 'int'>

print(round(f, 1))
# 123.5

print(round(f, 2))
# 123.46

print(round(f, -1))
# 120.0

print(round(f, -2))
# 100.0

print(round(f, 0))
# 123.0

print(type(round(f, 0)))
# <class 'float'>