Python String Formatting, 字串格式化

在 Python 中若要要求字串輸出格式時就必須使用字串的格式化,其方法有兩種:
一種是以 % 來完成,
另一種則是以 format 的方式來完成格式化的目的。

print("%s %s" % ("Hello","world!!" ))   
或
print('{} {}'.format('Hello', 'world!!')) #新的寫法

%s 代表 字串,{} 亦表示字串,
在{} 中可加入數字,可指定輸出的字串
上例中若寫成 print(‘{1} {0}’.format(‘Hello’, ‘world!!’)) ,
會輸出  world!! Hello
在 {} 內可以指定資料的類型,字串可用 {:s}。
若為數字則用 {:d}, 或是上例中另一種格式化的做法:

print(" %d" % (9*6))
print('{:d}'.format(9*6))  #新的寫法

這個例子,在 99乘法表中用過,%d 表示十進位的整數。
至於浮點數則用 %f 操作:

print('%f' % (3.14159))
print('{:f}'.format(3.14159)) #新的寫法

還有一種做法是控制浮點數的長度,若長度不足則會在前面補上 0:

print('%08.4f' % (3.14159))
print('{:06.4f}'.format(3.14159)) #新的寫法
#顯示 003.1416
print('{:04d}'.format(3.14159)) #顯示 0003

上例中的 8 指的是字串的長度 4 指的是小數的長度,0 指的是長度不足 8則補 0,若寫成 8.4f,不足 8 位,則左邊留空。

還有幾種是新的寫法才有的功能,像是

print('{:=5d}'.format((- 23))
#顯示 - 23 , 負號與 23 中間空兩格,共5格

日期的部份,則是以下的寫法

from datetime import datetime
print('{:%Y-%m-%d %H:%M}'.format(datetime(2019, 3, 29, 5, 30)))
#顯示 2019-03-29 05:30

還有許多的格式,可參考 https://pyformat.info/