Python?f-string實(shí)現(xiàn)高效字符串格式化
f-string,稱為格式化字符串常量(formatted string literals),是Python3.6新引入的一種字符串格式化方法,該方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加簡便。
python中常用有3種字符串格式化的方法:
- 占位符 例如 print("my name is " % "hanmeimei")
- format 例如 print("my name is {}".format("hanmeimei"))
- f-string 例如 print(f"my name is {'hanmeimei'}")
其中f-string是推薦的最清晰,效率最高的方法。本篇主要講解f-string常見的使用方法。
1.語法
f-string采用content:format} 設(shè)置字符串格式,其中 content 是替換并填入字符串的內(nèi)容,可以是變量、表達(dá)式、函數(shù)等,format 是格式描述符,可以省略。
Python f-string 格式化字符串的完整格式說明是通過冒號(:)后面的格式規(guī)范符來實(shí)現(xiàn)的。這個(gè)格式化規(guī)范符可以用來控制數(shù)字、字符串、時(shí)間日期等數(shù)據(jù)類型的輸出格式。以下是完整的格式說明,包括常見的格式化選項(xiàng)及其用法。
f"{expression:{flags}{width}{precision}{type}}"
- expression: 要格式化的值(例如數(shù)字、字符串等)。
- flags: 用于指定填充方式、對齊方式等。
- width: 輸出的最小寬度。如果輸出的值寬度小于指定的寬度,則會進(jìn)行填充。
- precision: 用于控制浮動點(diǎn)數(shù)的小數(shù)點(diǎn)精度或其他數(shù)值精度。
- type: 用于指定格式類型,例如浮動點(diǎn)數(shù)、整數(shù)、字符串等。
簡單使用
f-string用大括號 {} 表示被替換字段,其中直接填入替換內(nèi)容:
>>> name = 'Eric'
>>> f'Hello, my name is {name}'
'Hello, my name is Eric'
>>> number = 7
>>> f'My lucky number is {number}'
'My lucky number is 7'
>>> price = 19.99
>>> f'The price of this book is {price}'
'The price of this book is 19.99'
注意:不管變量的類型是什么,最后都會得到字符串類型的結(jié)果
2.使用方法
2.1 寬度控制
使用f-string最常見的就是控制變量精度和輸出寬度
| 格式描述符 | 含義與作用 | |
|---|---|---|
| width | 整數(shù) width 指定寬度 | 0width:整數(shù) width 指定寬度,開頭的 0 指定高位用 0 補(bǔ)足寬度 |
| width.precision | 整數(shù) width 指定寬度,整數(shù) precision 指定顯示精度 |
以圓點(diǎn)為分割,圓點(diǎn)之前控制輸出寬度,原點(diǎn)之后控制輸出精度。
控制輸出寬度,不管是數(shù)值類型和字符串類型都可以。語法:f"{變量: 寬度}"
- 指定寬度小于變量寬度:正常輸出
- 指定寬度大于變量寬度:輸出指定寬度,以空格補(bǔ)齊。字符串右補(bǔ)齊,數(shù)值左補(bǔ)齊
>>> a = 3.1415926
# 變量寬度9,指定寬度20,數(shù)值左補(bǔ)齊
>>> print(f"{a:20}")
3.1415926
>>> print(len(f"{a:20}"))
20
>>> c = "hello world"
>>> print(f"{c:5}")
hello world
>>> print(f"{c:25}")
hello world
# 變量只有11個(gè)字符串,指定寬度為25,輸出長度為25,以空格補(bǔ)齊
>>> print(len(f"{c:25}"))
25
有一個(gè)特別使用f"{變量: 0寬度}",在寬度前面加0可以實(shí)現(xiàn)變量顯示前面用0補(bǔ)齊
>>> a = 3.1415926
>>> print(f"{a:020}")
000000000003.1415926
>>>
2.2 精度控制
數(shù)值
整型和浮點(diǎn)數(shù)使用f-string可以控制輸出的精度。語法是 f"{變量: .4f}",其中4f是指小數(shù)點(diǎn)后的位數(shù),可以實(shí)現(xiàn)精度截?cái)嗷驍U(kuò)充。其中截?cái)嗟囊?guī)則是四舍五入,擴(kuò)充是將精度增加到指定位數(shù)
>>> a = 3.1415926
>>> print(f"{a:.4f}")
3.1416
>>> b = 100
>>> print(f"")
'100'
>>> print(f"{b:.6f}")
'100.000000'
>>>
字符串
字符串同樣可以控制輸出精度,使用語法** f"{變量:.4s}"**, 其中4s指字符串的長度,s可以省略,可以實(shí)現(xiàn)截?cái)啵粫畛?。設(shè)置的長度大于變量長度,輸出仍然是變量的長度。
>>> c = "hello world"
>>> print(f"{c:.2}")
he
>>> print(f"{c:.10s}")
hello worl
>>> print(f"{c:.5s}")
hello
# 精度超出長度不會填充
>>> print(f"{c:.20s}")
hello world
>>> print(len(f"{c:.20s}"))
11
可以同時(shí)控制寬度和精度
>>> a = 3.1415926
>>> print(f"{a:14.4f}")
3.1416
>>> c = "hello world"
>>> print(f"{c:25.4s}")
hell
2.3 對齊
對齊是指輸出時(shí)當(dāng)指定寬度大于變量寬度時(shí)如何顯示,可以選擇的包括:
- >: 右對齊
- <: 左對齊 (默認(rèn)行為)
- ^: 居中對齊
>>> c = "hello world"
# 設(shè)置寬度之后就會出現(xiàn)空格填充,字符串默認(rèn)右填充即左對齊
>>> print(f"{c:20}")
hello world
>>> print(len(f"{c:20}"))
20
>>> print(f"{c:<20}")
hello world
>>>
>>> print(f"{c:>20}")
hello world
>>> print(f"{c:^20}")
hello world 2.4 填充
在對齊時(shí)默認(rèn)使用空格填充,也可以使用指定字符填充。使用語法 **f"{變量: 填充字符<寬度}" **,填充字符常見:-、+、*、0等等
>>> c = "hello world"
>>> print(f"{c:<20}")
hello world
>>> print(f"{c:-<20}")
hello world---------
>>> print(f"{c:->20}")
---------hello world
>>>
>>> print(f"{c:-^20}")
----hello world-----
>>> print(f"{c:*^20}")
****hello world*****
>>> print(f"{c:0^20}")
0000hello world000002.5 數(shù)據(jù)格式
類型標(biāo)識符 (type) 類型標(biāo)識符決定了如何表示和格式化數(shù)值、字符串等常見數(shù)據(jù)類型。常見的類型標(biāo)識符包括:
- s: 字符串。
- b: 二進(jìn)制整數(shù)格式
- d: 十進(jìn)制整數(shù)(整數(shù))
- o: 八進(jìn)制整數(shù)格式
- x: 十六進(jìn)制小寫。
- X: 十六進(jìn)制大寫。
- c: 字符格式,按unicode編碼將整數(shù)轉(zhuǎn)換為對應(yīng)字符
- f: 浮動點(diǎn)數(shù)(默認(rèn)的浮動點(diǎn)數(shù))。
- e: 科學(xué)計(jì)數(shù)法表示浮動點(diǎn)數(shù)。
- g: 科學(xué)計(jì)數(shù)法或浮動點(diǎn)數(shù)(根據(jù)精度選擇合適格式)。
- %: 百分比格式,將浮動點(diǎn)數(shù)乘以 100 并附加 % 符號。
數(shù)值轉(zhuǎn)十進(jìn)制
>>> value = 0xff
>>> value
255
>>> print(f"{value:d}")
255進(jìn)制轉(zhuǎn)換
>>> a = 378297640000
>>>
# 10轉(zhuǎn)2
>>> print(f"{a:b}")
101100000010100010010111110010001000000
# 10轉(zhuǎn)8
>>> print(f"{a:d}")
378297640000
# 10轉(zhuǎn)16
>>> print(f"{a:x}")
58144be440
默認(rèn)不添加進(jìn)制的前綴,使用# 可以添加
>>> a = 378297640000
>>> print(f"{a:#b}")
0b101100000010100010010111110010001000000
>>> print(f"{a:#d}")
378297640000
>>> print(f"{a:#x}")
0x58144be440
>>> print(f"{a:#X}")
0X58144BE440
變量轉(zhuǎn)浮點(diǎn)數(shù)
>>> value = 0xff
???????>>> print(f"{value:f}")
255.000000
>>> 將整數(shù)轉(zhuǎn)換為unicode編碼對應(yīng)字符
>>> a = 69
>>> print(f"{a:c}")
E
>>> a = 290
>>> print(f"{a:c}")
?
>>> a = 2736
>>> print(f"{a:c}")
?
科學(xué)計(jì)數(shù)法
>>> a = 378297640000
>>>
>>> print(f"{a:e}")
3.782976e+11
>>> b = -0.132465
>>>
>>> print(f"{b:e}")
-1.324650e-01
百分號
將浮動點(diǎn)數(shù)乘以 100 并附加 % 符號
>>> a = 0.5473
>>> print(f"{a:%}")
54.730000%2.6 時(shí)間格式
fstring 以通過結(jié)合 datetime 模塊來實(shí)現(xiàn)時(shí)間的格式化。更多格式可自行查閱。
>>> from datetime import datetime
>>>
>>> now = datetime.now()
>>>
>>> now
datetime.datetime(2025, 5, 15, 17, 42, 6, 490934)
>>> formatted_time = f"{now:%Y-%m-%d %H:%M:%S}"
>>> print(formatted_time)
2025-05-15 17:42:06
>>> 3.綜合使用
浮點(diǎn)數(shù)填充到20位中間對齊保留2位小數(shù)點(diǎn)
>>> a = 3.1415926
???????>>> print(f"{a:-^20.2f}")
--------3.14--------整數(shù)填充到30位右對齊轉(zhuǎn)換成十六進(jìn)制
>>> a = 378297640000
???????>>> print(f"{a:+>30x}")
++++++++++++++++++++58144be440
以上就是Python f-string實(shí)現(xiàn)高效字符串格式化的詳細(xì)內(nèi)容,更多關(guān)于Python f-string字符串格式化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Tensorflow中的placeholder和feed_dict的使用
這篇文章主要介紹了Tensorflow中的placeholder和feed_dict的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
Python實(shí)現(xiàn) 多進(jìn)程導(dǎo)入CSV數(shù)據(jù)到 MySQL
本文給大家分享的是使用python實(shí)現(xiàn)多進(jìn)程導(dǎo)入CSV文件數(shù)據(jù)到MySQL的思路方法以及具體的代碼分享,有相同需求的小伙伴可以參考下2017-02-02
tensorflow獲取預(yù)訓(xùn)練模型某層參數(shù)并賦值到當(dāng)前網(wǎng)絡(luò)指定層方式
今天小編就為大家分享一篇tensorflow獲取預(yù)訓(xùn)練模型某層參數(shù)并賦值到當(dāng)前網(wǎng)絡(luò)指定層方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python WebSockets 庫從基礎(chǔ)到實(shí)戰(zhàn)使用舉例
WebSocket是一種全雙工、持久化的網(wǎng)絡(luò)通信協(xié)議,適用于需要低延遲的應(yīng)用,如實(shí)時(shí)聊天、股票行情推送、在線協(xié)作、多人游戲等,本文給大家介紹Python WebSockets庫從基礎(chǔ)到實(shí)戰(zhàn)使用舉例,感興趣的朋友一起看看吧2025-08-08

