Python基礎教程 格式化字串

2021-09-24 12:16:18 字數 2858 閱讀 1781

1. 字串格式化基礎

字串格式化相當於字串模板。也就是說,如果乙個字串有一部分是固定的,而另一部分是動態變化的,那麼就可以將固定的部分做成模板,然後那些動態變化的部分使用字串格式化操作符(%) 替換。如一句問候語:「hello 李寧」,其中「hello」是固定的,但「李寧」可能變成任何乙個人的名字,如「賈伯斯」,所以在這個字串中,「hello」是固定的部分,而「李寧」是動態變化的部分,因此,需要用「%」操作符替換「李寧」,這樣就形成了乙個模板。

hello %s

上面的**中,「%」後面的s是什麼呢?其實字串格式化操作符後面需要跟著動態值的資料型別,以及更細節的格式(如對於浮點數來說,小數點後要保留幾位),這裡的「%s」表示動態部分要被替換成字串型別的值。如果在字串模板中有多個要被替換的部分,需要按順序用「%」表示,然後在格式化字串時,傳入的值也要符合這個順序。例5.2為我們演示了格式化字串的基本用法。

本例首先定義了乙個字串模板,然後傳入了兩個字串型別的值來格式化字串,最後將格式化後的字串輸出。

程式執行結果如下圖所示。

從上面的**可以看出,不僅在為字串模板指定格式化引數時要使用百分號(%),在格式化字串時,也要像取模一樣使用「%」操作符。還有就是指定字串格式化引數值要使用元組,在這裡不能使用列表。

在上圖中,只是使用了字串作為格式化引數,但在實際的應用中,可能會有其他型別的字串格式化引數。如果遇到這種情況,可以使用str函式將這些資料型別的值轉換為字串型別的值,然後再傳入字串模板,這麼做在大多數情況下是可行的,但如果要對格式化引數值有更進一步的要求,光使用str函式就做不到了,這就要使用能表示這些資料型別的格式化引數,如「%f」表示浮點型別的格式化引數。

在下面**的字串模板中包含了字串、整數和浮點數型別的模板。

程式的執行結果如下圖所示。

在上面的**中,為格式化字串指定了不同資料型別的格式化引數。如果要在格式化字串中顯示百分號(%),就要使用兩個百分號(%%)表示。當傳入的引數值的數量與格式化引數的數量不匹配時,就會丟擲異常。

模板字串

在string模組中提供了乙個用於格式化字串的template類,該類的功能是用同乙個值替換所有相同的格式化引數。template類的格式化引數用美元符號($)開頭,後面跟著格式化引數名稱,相當於變數名。在格式化時,需要使用template類的substitute方法,該方法用於指定格式化引數對應的值。

在上面的**中,通過template類的構造方法傳入了乙個格式化字串,在這個格式化字串中包含了3個「katex parse error: expected 'eof', got '」' at position 2: s」̲,然後呼叫了substitut…s」,就替換多少個「$s」。substitute方法還可以通過字典(見下一章)設定格式化引數的值。例5.4完整地演示了如何使用template類格式化字串。

使用template格式化字串,當格式化引數是乙個字串的一部分時,需要用一對大括號({})將格式化引數變數括起來。

程式執行結果如下圖所示。

字串的format方法

字串本身也有乙個format方法用於格式化當前的字串。這個format方法和前面講的格式化操作符(%)不太一樣。字串格式化引數並不是用百分號(%)表示,而是用一對大括號({}),而且支援按順序指定格式化引數值和關鍵字格式化引數。例如,下面的**通過format方法按順序為格式化字串指定了引數值。

print("{}  {}  {}".format(1,2,3))  # 執行結果:1  2  3

我們可以看到,上面的**在字串中指定了3對空的大括號,這代表3個格式化引數,不需要指定資料型別,可以向其傳遞python語言支援的任何值。通過format方法傳入3個值(1,2,3),這3個值會按順序替換格式化字串中的3對空的大括號。

命名格式化引數是指在一對大括號中指定乙個名稱,然後呼叫format方法時也要指定這個名稱。

print("    ".format(a =1,c =2,b =3))  # 執行結果:132

上面的**在3對大括號中分別新增了「a」、「b」、「c」。通過format方法指定了這3個關鍵字引數的值。我們可以看到,並沒有按順序指定關鍵字引數的值。這也是使用關鍵字引數的好處,只要名字正確,fomat引數的順序可以任意指定。當然,順序方式和關鍵字引數方式可以混合使用,而且還可以指定順序方式中格式化引數從format方法提取引數值的順序,甚至可以取format方法引數值的一部分。哇,接連丟擲了這麼多功能,可能很多讀者有點應接不暇了,別著急,例5.5會為我們演示format方法的一些常用使用方式。

本例分別使用一對大括號「{}」、命名格式化引數和順序格式化引數3中方式格式化字串。

程式執行結果如下圖所示。

基礎教程 Python格式化字串(格式化輸出)

print 函式使用以 開頭的轉換說明符對各種型別的資料進行格式化輸出,具體請看下表。表 1 python 轉換說明符 轉換說明符 解釋 d i 轉換為帶符號的十進位制整數 o轉換為帶符號的八進位制整數 x x 轉換為帶符號的十六進製制整數 e轉化為科學計數法表示的浮點數 e 小寫 e轉化為科學計數...

Python 格式化字元

字串格式化操作符 只適用於字串型別,語法如下 format string string to convert format string為格式標記字串,形式為 cdoe string to convert 為要格式化的字串,如果是兩個以上,則需要用小括號括起來。格式化符號 說明 r 轉換成字元 as...

Python 格式化字元

字元 c 單個字元 b 二進位制整數 d 十進位制整數 i 十進位制整數 會自動將輸入的八進位制或十六進製制數轉換成十進位制 o 八進位制整數 x 十六進製制整數 s 字串 採用str 的顯示 r 字串 採用repr 的顯示 e 指數 基底寫為e e 指數 基底寫為e f 浮點數 f 浮點數,與上相...