文章目錄
- 一. “%”用法
- 二. format用法(推薦使用)
- 2.1 位置,數字,關鍵字匹配
- 2.2 對象
- 2.3 進階用法
- 2.3.1 帶符號輸出(不常用)
- 2.3.2 日期處理
- 2.3.3 金融業常用, 錢數用逗號分隔
- 2.3.4 特殊占位符
- 2.3.5 變形用法 (個人常用)
一. “%”用法
1.1 整數
>>> "%o" % 29
'35'
>>> "%d" % 29 # 常用
'29'
>>> "%x" % 29
'1d'
1.2 浮點數
- %f 浮點數: 保留小數點後6位有效數字
- %.3f 保留小數點後3位有效數字
- %e 保留小數點後6位有效數字,以指數形式輸出
- %.3e 保留小數後3位有效數字,使用科學計數法
- %g 在保證有6位有效數字的前提下, 使用小數方式,否則使用科學計數法
- %.3g 保留3位有效數字,使用小數或科學計數法
>>> "%f" % 1.1
'1.100000'
>>> "%.3f" % 1.11111 # 常用
'1.111'
>>> "%e" % 1.1
'1.100000e+00'
>>> "%.3e" % 1.1
'1.100e+00'
>>> "%g" % 1.1
'1.1'
>>> "%g" % 1111.1111
'1111.11'
>>> "%.3g" % 1111.1111
'1.11e+03'
>>> "%.8g" % 1111.1111
'1111.1111'
1.3 字符串
- %s
- %10s: 右對齊,占位符10位
- %-10s: 左對齊,占位符10位
- %.2s: 截取2位字符串
- %10.2s: 10位占位符,截取兩位字符串
>>> "%s" % "hello world" # 常用
'hello world'
>>> "%20s" % "hello world"
' hello world'
>>> "%-20s" % "hello world"
'hello world '
>>> "%.3s" % "hello world"
'hel'
>>> "%20.3s" % "hello world"
' hel'
>>> "%-20.3s" % "hello world"
'hel '
二. format用法(推薦使用)
2.1 位置,數字,關鍵字匹配
>>> "{} {}".format("hello", "world")
'hello world'
>>> "{0} {1} {0}".format("hello", "world")
'hello world hello'
>>> "{a} {b} {c}".format(a="hello",b="world",c="test") # 常用
'hello world test'
2.2 對象
>>> tup = ("hello", "world")
>>> "{0[0]} {0[1]}".format(tup)
'hello world'
>>> d = {
"a": "hello", "b": "world"}
>>> "{d[a]} {d[b]}".format(d) # 常見的錯誤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'd'
>>> "{0[a]} {0[b]}".format(d) # 進階用法
'hello world'
>>>
2.3 進階用法
- ‘b’ - 二進制。將數字以2為基數進行輸出。
- ‘c’ - 字符。在打印之前將整數轉換成對應的Unicode字符串。
- ‘d’ - 十進制整數。將數字以10為基數進行輸出。
- ‘o’ - 八進制。將數字以8為基數進行輸出。
- ‘x’ - 十六進制。將數字以16為基數進行輸出,9以上的位數用小寫字母。
- ‘e’ - 冪符號。用科學計數法打印數字。用’e’表示冪。
- ‘g’ - 一般格式。將數值以fixed-point格式輸出。當數值特別大的時候,用冪形式打印。
- ‘n’ - 數字。當值為整數時和’d’相同,值為浮點數時和’g’相同。不同的是它會根據區域設置插入數字分隔符。
- ‘%’ - 百分數。將數值乘以100然後以fixed-point(‘f’)格式打印,值後面會有一個百分號。
>>> "{:%}".format(10)
'1000.000000%'
>>> "{:.2%}".format(0.02) # 百分比計算 常用
'2.00%'
>>> "{:10s} and {:10s}".format("hello", "world")
'hello and world '
>>> "{:10s} and {:>10s}".format("hello", "world")
'hello and world'
>>> "{:^10s} and {:^10s}".format("hello", "world")
' hello and world '
>>> "{} is {:.2f}".format(1.123, 1.123) # 限定小數位
'1.123 is 1.12'
>>> "{} is {:>10.2f}".format(1.123, 1.123)
'1.123 is 1.12'
>>> "{:*^30s}".format("test") # 居中對齊
'*************test*************'
>>> "{:*>30s}".format("test") # 右對齊
'**************************test'
>>> "{:*<30s}".format("test") # 左對齊
'test**************************'
2.3.1 帶符號輸出(不常用)
>>> "{:+f}; {:+f}".format(1.23, -1.23)
'+1.230000; -1.230000'
>>> "{:+.2f}; {:+.2f}".format(1.23, -1.23)
'+1.23; -1.23'
>>> "{:+.2f}; {:-.2f}".format(1.23, -1.23)
'+1.23; -1.23'
>>> "{:-.2f}; {:-.2f}".format(1.23, -1.23)
'1.23; -1.23'
>>> "{: .2f}; {: .2f}".format(1.23, -1.23) # 正數有個空位
' 1.23; -1.23'
2.3.2 日期處理
>>> import datetime
>>> d = datetime.datetime(2021,6,23,18,30,30)
>>> "{:%Y-%m-%d %H:%M:%S}".format(d)
'2021-06-23 18:30:30'
2.3.3 金融業常用, 錢數用逗號分隔
>>> "{:,}".format(1234567890)
'1,234,567,890'
2.3.4 特殊占位符
>>> "{!r} {!s}".format("test1","test2")
"'test1' test2"
>>>
2.3.5 變形用法 (個人常用)
>>> a = "hello"
>>> b = "world"
>>> f"{
a} {
b}"
'hello world'
>>> f"word is {
a.upper()}"
'word is HELLO'