Python?f-string實現(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} 設置字符串格式,其中 content 是替換并填入字符串的內容,可以是變量、表達式、函數(shù)等,format 是格式描述符,可以省略。
Python f-string 格式化字符串的完整格式說明是通過冒號(:)后面的格式規(guī)范符來實現(xiàn)的。這個格式化規(guī)范符可以用來控制數(shù)字、字符串、時間日期等數(shù)據(jù)類型的輸出格式。以下是完整的格式說明,包括常見的格式化選項及其用法。
f"{expression:{flags}{width}{precision}{type}}"
- expression: 要格式化的值(例如數(shù)字、字符串等)。
- flags: 用于指定填充方式、對齊方式等。
- width: 輸出的最小寬度。如果輸出的值寬度小于指定的寬度,則會進行填充。
- precision: 用于控制浮動點數(shù)的小數(shù)點精度或其他數(shù)值精度。
- type: 用于指定格式類型,例如浮動點數(shù)、整數(shù)、字符串等。
簡單使用
f-string用大括號 {} 表示被替換字段,其中直接填入替換內容:
>>> 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'
注意:不管變量的類型是什么,最后都會得到字符串類型的結果
2.使用方法
2.1 寬度控制
使用f-string最常見的就是控制變量精度和輸出寬度
格式描述符 | 含義與作用 | |
---|---|---|
width | 整數(shù) width 指定寬度 | 0width:整數(shù) width 指定寬度,開頭的 0 指定高位用 0 補足寬度 |
width.precision | 整數(shù) width 指定寬度,整數(shù) precision 指定顯示精度 |
以圓點為分割,圓點之前控制輸出寬度,原點之后控制輸出精度。
控制輸出寬度,不管是數(shù)值類型和字符串類型都可以。語法:f"{變量: 寬度}"
- 指定寬度小于變量寬度:正常輸出
- 指定寬度大于變量寬度:輸出指定寬度,以空格補齊。字符串右補齊,數(shù)值左補齊
>>> a = 3.1415926 # 變量寬度9,指定寬度20,數(shù)值左補齊 >>> 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個字符串,指定寬度為25,輸出長度為25,以空格補齊 >>> print(len(f"{c:25}")) 25
有一個特別使用f"{變量: 0寬度}",在寬度前面加0可以實現(xiàn)變量顯示前面用0補齊
>>> a = 3.1415926 >>> print(f"{a:020}") 000000000003.1415926 >>>
2.2 精度控制
數(shù)值
整型和浮點數(shù)使用f-string可以控制輸出的精度。語法是 f"{變量: .4f}",其中4f是指小數(shù)點后的位數(shù),可以實現(xiàn)精度截斷或擴充。其中截斷的規(guī)則是四舍五入,擴充是將精度增加到指定位數(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可以省略,可以實現(xiàn)截斷,但不會填充。設置的長度大于變量長度,輸出仍然是變量的長度。
>>> 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
可以同時控制寬度和精度
>>> a = 3.1415926 >>> print(f"{a:14.4f}") 3.1416 >>> c = "hello world" >>> print(f"{c:25.4s}") hell
2.3 對齊
對齊是指輸出時當指定寬度大于變量寬度時如何顯示,可以選擇的包括:
- >: 右對齊
- <: 左對齊 (默認行為)
- ^: 居中對齊
>>> c = "hello world" # 設置寬度之后就會出現(xià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 填充
在對齊時默認使用空格填充,也可以使用指定字符填充。使用語法 **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 world00000
2.5 數(shù)據(jù)格式
類型標識符 (type) 類型標識符決定了如何表示和格式化數(shù)值、字符串等常見數(shù)據(jù)類型。常見的類型標識符包括:
- s: 字符串。
- b: 二進制整數(shù)格式
- d: 十進制整數(shù)(整數(shù))
- o: 八進制整數(shù)格式
- x: 十六進制小寫。
- X: 十六進制大寫。
- c: 字符格式,按unicode編碼將整數(shù)轉換為對應字符
- f: 浮動點數(shù)(默認的浮動點數(shù))。
- e: 科學計數(shù)法表示浮動點數(shù)。
- g: 科學計數(shù)法或浮動點數(shù)(根據(jù)精度選擇合適格式)。
- %: 百分比格式,將浮動點數(shù)乘以 100 并附加 % 符號。
數(shù)值轉十進制
>>> value = 0xff >>> value 255 >>> print(f"{value:d}") 255
進制轉換
>>> a = 378297640000 >>> # 10轉2 >>> print(f"{a:b}") 101100000010100010010111110010001000000 # 10轉8 >>> print(f"{a:d}") 378297640000 # 10轉16 >>> print(f"{a:x}") 58144be440
默認不添加進制的前綴,使用# 可以添加
>>> a = 378297640000 >>> print(f"{a:#b}") 0b101100000010100010010111110010001000000 >>> print(f"{a:#d}") 378297640000 >>> print(f"{a:#x}") 0x58144be440 >>> print(f"{a:#X}") 0X58144BE440
變量轉浮點數(shù)
>>> value = 0xff ???????>>> print(f"{value:f}") 255.000000 >>>
將整數(shù)轉換為unicode編碼對應字符
>>> a = 69 >>> print(f"{a:c}") E >>> a = 290 >>> print(f"{a:c}") ? >>> a = 2736 >>> print(f"{a:c}") ?
科學計數(shù)法
>>> a = 378297640000 >>> >>> print(f"{a:e}") 3.782976e+11 >>> b = -0.132465 >>> >>> print(f"{b:e}") -1.324650e-01
百分號
將浮動點數(shù)乘以 100 并附加 % 符號
>>> a = 0.5473 >>> print(f"{a:%}") 54.730000%
2.6 時間格式
fstring 以通過結合 datetime 模塊來實現(xiàn)時間的格式化。更多格式可自行查閱。
>>> 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.綜合使用
浮點數(shù)填充到20位中間對齊保留2位小數(shù)點
>>> a = 3.1415926 ???????>>> print(f"{a:-^20.2f}") --------3.14--------
整數(shù)填充到30位右對齊轉換成十六進制
>>> a = 378297640000 ???????>>> print(f"{a:+>30x}") ++++++++++++++++++++58144be440
以上就是Python f-string實現(xiàn)高效字符串格式化的詳細內容,更多關于Python f-string字符串格式化的資料請關注腳本之家其它相關文章!
相關文章
Python使用grequests(gevent+requests)并發(fā)發(fā)送請求過程解析
這篇文章主要介紹了Python使用grequests并發(fā)發(fā)送請求過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09Mac中Python 3環(huán)境下安裝scrapy的方法教程
作為一名python爬蟲愛好者,怎能不折騰下Scrapy?折騰了許久之后終于安裝到了mac中,所以下面這篇文章主要給大家介紹了關于Mac系統(tǒng)中Python 3環(huán)境下安裝scrapy的相關資料,文中將實現(xiàn)的步驟一步步介紹的非常詳細,需要的朋友可以參考下。2017-10-10python opencv鼠標畫矩形框之cv2.rectangle()函數(shù)
鼠標操作屬于用戶接口設計,以前一直使用Qt來做,但是如果只需要簡單的鼠標,鍵盤操作,直接調用opencv庫的函數(shù)也未嘗不可,下面這篇文章主要給大家介紹了關于python opencv鼠標畫矩形框cv2.rectangle()函數(shù)的相關資料,需要的朋友可以參考下2021-10-10Python+OpenCV實現(xiàn)尋找到圓點標定板的角點
這篇文章主要為大家詳細介紹了Python+OpenCV實現(xiàn)找到圓點標定板所有點后通過距離找兩個角點,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-11-11pyqt5之將textBrowser的內容寫入txt文檔的方法
今天小編就為大家分享一篇pyqt5之將textBrowser的內容寫入txt文檔的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python?datacompy?找出兩個DataFrames不同的地方
本文主要介紹了Python?datacompy?找出兩個DataFrames不同的地方,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>2022-05-05