python基礎——格式化字符串

python中格式化字符串有三種方式:

  • %方式
  • format方式
  • f方式

本博文先聊聊前兩種


1.% 方式

格式:%[(name)] [flags] [width] .[precision] typecode

  • (name)    可選,用於選擇指定的key
print("%(name)s的年齡是%(age)d歲" % {"name":"小明","age":20})

# 輸出結果爲:
小明的年齡是20歲
  • flags        可選,可供選擇的值有:

     +       右對齊;正數前加正號,負數前加負號;

     -        左對齊;正數前無符號,負數前加負號;

     空格    右對齊;正數前加空格,負數前加負號;

     0        右對齊;正數前無符號,負數前加負號;用0填充空白處

  • width         可選,佔有寬度(和flags配合使用)
print("%(name)10s的年齡是%(age)10d歲" % {"name":"小明","age":20})
print("%(name)+10s的年齡是%(age)-10d歲" % {"name":"小明","age":20})
print("%(name) 10s的年齡是%(age) 10d歲" % {"name":"小明","age":-20})
print("%(name)10s的年齡是%(age)010d歲" % {"name":"小明","age":-20})

# 輸出結果分別爲:
        小明的年齡是        20歲                 # 沒有flags情況下默認右對齊補空格
        小明的年齡是20        歲
        小明的年齡是       -20歲
        小明的年齡是-000000020歲
  • .precision       可選,小數點後保留的位數
print("圓周率的值是%(pi).2f" % {"pi":3.1415926})
print("圓周率的值是%(pi)010.2f" % {"pi":3.1415926})

# 輸出結果分別爲:
圓周率的值是3.14
圓周率的值是0000003.14
  • typecode      必選       常用可選值有:
格式字符 說明 格式字符 說明
s 字符串(採用str()顯示) r 字符串(採用repr()顯示)
f 浮點數 o 八進制整數
d 十進制整數 x 十六進制整數
e或E 將整數、浮點數換成科學計數法 % 字符%

2.format 方式

基本語法爲:

  • <模板字符串>.format(<逗號分隔的參數>)

如果大括號中沒有序號,則按照位置順序替換:

print("{}:計算機{}的CPU佔用率爲{}".format("2019-12-24","User",30))

輸出結果爲:
2019-12-24:計算機User的CPU佔用率爲30

如果大括號中指定了使用參數的序號,按照序號對應參數替換.參數從0開始編號:

print("{1}:計算機{0}的CPU佔用率爲{2}".format("User","2019-12-24",30))

輸出結果爲:
2019-12-24:計算機User的CPU佔用率爲30

還可以通過關鍵字參數指定填充的參數

print("{time}:計算機{name}的CPU佔用率爲{rate}".format(name="User",time="2019-12-24",rate=30))

輸出結果爲:
2019-12-24:計算機User的CPU佔用率爲30

還可以通過字典的key指定填充的參數

dic = {"name":"User","time":"2019-12-24","rate":30}
print("{dic[time]}:計算機{dic[name]}的CPU佔用率爲{dic[rate]}".format(dic=dic))

輸出結果爲:
2019-12-24:計算機User的CPU佔用率爲30

還可以通過對象屬性指定填充的參數

class Computer():
    def __init__(self,name,time,rate):
        self.name=name
        self.time=time
        self.rate=rate
my_computer = Computer("User","2019-12-24",30)
print("{my_computer.time}:計算機{my_computer.name}的CPU佔用率爲{my_computer.rate}".format(my_computer=my_computer))
  • format()方法中<模板字符串>除了包含參數序號,還可以包括格式控制符.此時,內部樣式如下:

   {<參數序號>:<格式控制符>}

其中,<格式控制符>包括:<填充><對齊><寬度>,<.精度><類型>6個字段,這些字段都是可選的,可以組合使用.

        <填充>:指<寬度>內除了參數外的字符采用什麼方式表示,默認採用空格.

        <寬度>:指當前槽的設定輸出字符寬度       

        <對齊>:指參數在<寬度>內輸出是的對齊方式,分別使用<,>和=三個符號表示左對齊,右對齊和居中對齊.

        ,逗號用於顯示數字的千位分隔符

        <.精度>:表示兩個含義,有小數點(.)開頭.對於浮點數,精度表示小數部分輸出的有效位數.對於字符串,精度表示輸出的最大長度.

        <類型>:表示輸出整數和浮點數類型的格式規則,用法如同%格式化字符。

print("第一個是:{0:@>10.3f},第二個是:{1:0<10,}".format(3.1415926,12345))

#輸出結果爲
第一個是:@@@@@3.142,第二個是:12,3450000

#表示的意思分別是:
#第一個:第0位數字,以標準浮點數、保留3爲有效數字、指定10個字符寬度、右對齊、用@填充
#第二個:第1位數字,用“,”分隔千位、指定10個字符寬度、左對齊、用0填充

 

發佈了6 篇原創文章 · 獲贊 1 · 訪問量 4335
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章