Pythonフォーマット文字列%とformatの違い


概要
Pythonで文字列をフォーマットするには、%とformatの2つの方法があります.
Python2.6 formatという文字列をフォーマットする方法を導入しました
区別する
%
#        
c = (250, 250)
#   %      ...
s1 = "    :%s" % (c,)
#   c     ,  %            c

format
#        
c = (250, 250)
#   format   
s2 = "    :{}".format(c)

3.6の新しい特性f-strings
name = "DZM"
age = 18
f"My name is {name}.I'm {age}"
# "My name is DZM.I'm 18"

よく使われるformatの使い方
通過位置
print('{0},{1},{0}'.format('dzm', 18))
# dzm,18,dzm

キーワード経由
位置に依存しない
print('my name is {x},my age is {y}'.format(x='dzm',y=18))
# my name is dzm,my age is 18
#   
data = {"name": "DZM", "age": 18}
print("Name:{name}, Age:{age}".format(**data))
# 'Name:DZM, Age:18'

オブジェクトのプロパティを使用
class Person():
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "{self.name} is {self.age} years old.".format(self=self)

dzm = Person("dzm", 18)
print(dzm)
# dzm is 18 years old.

下付き文字
data = [11, 22]
print("{0[0]} ----- {0[1]}".format(data))
# 11 ----- 22

塗りつぶしと位置合わせ
塗りつぶしは常に位置合わせとともに使用されます^、中央揃え、左揃え、右揃え、後ろ幅:番号の後ろに塗りつぶされた文字は1文字のみで、指定しないとデフォルトはスペースで塗りつぶされます.
# 18   10     
print("{:>10}".format('18'))
'        18'
# 18   10 0  
"{:0>10}".format('18')

zfill()メソッドPython zfill()メソッドは、指定した長さの文字列を返し、元の文字列を右揃えにし、前に0を入力します.zfill()メソッド構文:str.zfill(width)パラメータwidth文字列の長さを指定します.元の文字列は右揃えで、前に0を入力します.指定した長さの文字列を返します.
"18".zfill(10)
# '0000000018'

精度とタイプf
ここで.4は長さ4の精度を示し,fはfloatタイプを示す.
print("{:.4f}".format(3.1415926))
# 3.1416

その他の進数b,d,o,xはそれぞれバイナリ,10進数,8進数,16進数である
{:b}".format(18)
'10010'

千桁区切り文字
"{:,}".format(1234567890)
'1,234,567,890'

参考記事:https://www.cnblogs.com/liwenzhou/p/8570701.html