Python格式化字符串%與format的區別

簡介

Python中格式化字符串目前有兩種方法:%和format

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

填充與對齊

填充常跟對齊一起使用
^、<、>分別是居中、左對齊、右對齊,後面帶寬度
:號後面帶填充的字符,只能是一個字符,不指定的話默認是用空格填充。

# 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分別是二進制、十進制、八進制、十六進制

{:b}".format(18)
'10010'

千位分隔符

"{:,}".format(1234567890)
'1,234,567,890'

參考文章:https://www.cnblogs.com/liwenzhou/p/8570701.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章