python3字串格式化的方法

2021-08-24 18:03:40 字數 2461 閱讀 9917

python中使用百分號來引導字串格式化。%的左邊是待格式化字串,右邊是希望格式化的值。如果希望格式化的值不止乙個,則百分號應該使用多個值的元組或字典來表示(如果使用列表或者其它序列代表元組,那麼序列會被當做乙個值,達不到多個值的效果),並且每個值都對對應字串中的乙個轉換說明符%,位置要對應;若採用字典來控制格式化的話,則更靈活

1、元組的格式化字串

基本的轉換說明符包括以下幾個部分:

(1)字串內的%字元:字串中%標誌轉換說明符的開始

(2)填充及對齊標誌(可選):「-」表示左對齊(在格式化內容的長度小於最小長度時)不夠的位數在後面用空格補充;「+」、「」(空格)、「0」表示若位數不夠則在前面用「」(空格)填充。

(3)最小字段寬度(可選):(最小字串寬度)轉換後的字串的最小長度,若不夠則在字串前補充空格,若長度超出給定的值則按實際長度

(4)「.」後跟精度值(可選):如果轉換的值是實數,則精度值就是小數點後的位數,如果轉換的是字串,那麼該字串的最大字串長度就由該精度值指定。

(5)轉換型別:

轉換型別含義s

將%右邊的格式化值轉換成字串(可理解為對其使用str()函式)

d,i,u

將格式化值(此時該值應該是數值型別,取該值的整數部分)轉換成帶符號的整數

r對格式化值使用repr()函式得到的字串

u不帶符號的十進位制數

o將%右邊的整數轉換成帶符號的八進位制數

x將%右邊的整數轉換成帶符號的十六進製制數,10-a,11-b...

x將%右邊的整數轉換成帶符號的十六進製制數,10-a,11-b...

e將浮點數轉化成科學計數法表示,用小寫e分隔

e將浮點數轉化成科學計數法表示,用大寫e分隔

f,f將數值轉化為十進位制浮點數表示

c接受乙個字元或數值(試了一下,數值在1-160之間結果是其16進製表示)

2、字典的格式化字串

在待格式化的字串中的轉換說明符後面加上「(key)」,字串外邊接「%dictname」,則待格式化的字串中的格式化部分替換成了「value」,這種情況試了下,好像是使用的key都必須是字元或者字串型別,且在%()中該key不加引號標註。

>>> x="da%-10.13sjia%-10.2f"

>>> x%("s****sdf",12.32131)

'das****sdf jia12.32

#待格式化字串內部的%領銜的五部分格式化控制:百分號、填充和對齊、精度、型別。

#這一部分內容對字典和元組都適用

>>> a

>>> b

'ni%(d)-10shao'

>>> b%a

'nius hao 『

>>> b='ni%(c)-10shao'

>>> b%a

'ni[1, 2, 3] hao' #整個列表內容算上[,逗號,空格,長度為9

>>> b='ni%(1)-10shao' #若果關鍵字為非字元型別,則結果出錯

>>> b%a

traceback (most recent call last):

file "", line 1, in keyerror: '1'

所以,在用字典格式化字串的時候需要主要,所使用的字典關鍵字是字型別,其value也需要注意。

3.使用format方法

這種情況則是用一對花括號取代了%引導格式化,但本人目前對其格式控制不是很熟悉。

花括號引導,若括號內為空,則format的引數和花括號一一對應

>>> a="ni{}hao{}a?"

>>> a.format("_jin_","_hua_")

'ni_jin_hao_hua_a?'

花括號內為索引號,則有幾個不同的索引,則format就有幾個引數(或者說是乙個長度對應的元組更貼切)

>>> a="nihaoa?"

>>> a.format("_jin_","_hua_")

'ni_hua_hao_jin_a?'

引數可以是乙個物件,但此時獲取引數的內容時要注意是對該物件的部分進行獲取還是整個物件

>>> b=["hello","world"]

引數是整個物件

>>> a.format("_jin_",b)

"ni['hello', 'world']hao_jin_a?"

引數是物件的部分元素

>>> "ni__hao__".format(123,b)

'nihello__hao123__'

花括號內是關鍵字,format的引數可以是對應的關鍵字賦值,也可以是包含了相應關鍵字的字典

>>> "-".format(k2=10,k1=15)

'15-10'

>>> dic=

>>> "-".format(**dic) #哪怕dic字典中不值k1,k2兩個key,這種也是沒問題的

'13-20'

Python3 字串格式化

python中的字串格式化方式有兩種 百分號佔位符 方式和format方式。百分號的方式相對來說比較老,而format方式則是比較先進的方式,企圖替換古老的方式,目前兩者並存。佔位符方式在python2.x中用的比較廣泛,隨著python3.x的使用越來越廣,format方式使用的更加廣泛。name...

Python3 字串格式化

字串的格式化方法分為兩種,分別為佔位符 和format方式。佔位符方式在python2.x中用的比較廣泛,隨著python3.x的使用越來越廣,format方式使用的更加廣泛。d例項 python3.0 age 29 print my age is d age my age is 29 s例項 py...

Python3 字串格式化

按照統一的規格去輸出成為乙個新的字串 fomat 有兩個引數位置引數和關鍵字引數用中括號括起來 為位置引數 love format i you i love you 為關鍵字引數 love format a i b you i love you format 不列印 列印 用中括號括起來後forma...