字符串格式化操作


我們經常會輸出類似“你好,XXX,你這個月的工資時XXX元!”的字符串,其中,“XXX”的內容是根據變量變化的的,因此,需要一種簡便的格式化字符串的方式。

字符串格式化的操作有兩種方式:使用符號%進行格式化、使用format()方法進行格式化。下面就來詳細介紹一下這兩種格式化。

使用符號“%”進行格式化

在Python中使用符號“%”進行格式化的形式與C語言類似,其一般形式為:

“%[標志][0][輸出最小寬度][.精度]格式字符”%變量

其中,方括號[]中的項為可選項,也可以表示為:

“%[±][0][m][.n]格式字符”%變量

格式化各項的意義
  1. 標志

標志字符為”+“或者”-“,指定輸出數據的對齊方式:指定”+“時,輸出右對齊;指定”-“時,輸出左對齊;不指定標志時缺省為”+“,默認右對齊。

  1. ”0“
0 顯示的數字前面填充'0'而不是默認的空格
  1. 輸出最小寬度

用十進制整數m表示輸出的最小位數。若實際位數大於定義的寬度,則按實際位數輸出;若實際位數小於定義的寬度,則補空格或0(如在m前有數字0,則補0)。

  1. 精度

精度格式符以”.“開頭,后跟十進制整數n。意義是:如果輸出數字,則表示小數的位數;如果輸出字符,則表示輸出字符的個數;若實際位數大於所定義的精度數,則截去超過的部分。

  1. 格式字符

格式字符用來表示輸出數據的類型,各種格式字符及其功能說明如下:

格式字符 功能說明 格式字符 功能說明
%s 字符串(采用str()顯示) %o 八進制整數
%r 字符串(采用repr()顯示) %x 十六進制整數
%c 單個字符 %f,%F 浮點數
%% 字符% %e,%E 指數(基底為e或E)
%d,%i 十進制整數 %g,%G 以%f或%e中較短的輸出寬度輸出浮點數

注意:%s和%r的主要區別在於%r可供編輯器使用和識別,而%s不能。

a = 15
b = 12345678.1234567
strs = "I love Python!"
print("a=%05d"%a)	# 使用m控制輸出位數為5的十進制整數,空位補0
print("b=%8.3f"%b)	# 輸出b,用m,n分別控制輸出的長度為8,小數點位數為3的浮點數
print("%17s"%strs)	# 使用m控制輸出字符串長度為17
print("%17r"%strs)	# 使用%r輸出字符串
print("%-17.5s"%strs)	# 使用m,n進行左對齊、限制字符串長度為17和字符位數為5

輸出結果為:

a=00015
b=12345678.123
  I love Python!
 'I love Python!'
I lov[_*12]

注意:[ _*12]代表的是輸出12個空格,這里由於不便於直觀表述,故用此方法讓大家理解。

使用format()方法進行格式化

使用format()方法也可以格式化字符串,其基本格式為:

模板字符串.format(逗號分隔的參數)

1、模板字符串是由一系列槽(用大括號表示)組成,用來控制字符串中嵌入值出現的位置,其基本思想是將format()方法中逗號分隔的參數按照序號替換到模板字符串的槽中(序號從0開始編號)。例如:

>>>"你好,{1},你這個月的工資是{0}元!".format(8500,張三)
'你好,張三,你這個月的工資是8500元!'

tips:{0}表示format括號里的第一個元素,{1}表示format括號里的第二個元素,依此類推。

2、如果大括號中沒有序號,則按照出現順序替換,例如:

>>>"你好,{},你這個月的工資是{}元!".format(8500,張三)
'你好,8500,你這個月的工資是張三元!'

3、format()方法中模板字符串的槽除了包括參數序號外,還可以包括格式控制信息,此時槽的內部樣式為:

{參數序號:格式控制標記}

其中格式控制標記用於控制參數顯示時的格式,下表列出了可用的格式控制標記及其意義:

填充 對齊 寬度 .精度 格式字符
用於填充的單個字符 <左對齊 >右對齊 ^居中對齊 輸出寬度 數字的千位分隔符 浮點數小數部分精度或字符串最大輸出長度 整數類型d,o,x,X,b,c 浮點數類型e,E,f,%

tips:格式控制標記包括”填充"、“對齊”、“寬度”、“,”、“.精度”、”格式字符"6個可選字段,這些字段可以組合使用。

a=15
b=12345678.1234567
strs="I love Python!"
print("a={0:05}".format(a))	# 輸出5位數字,空位補0(第一個0代表format括號內的第一個參數)
print("b={0:,.3f}".format(b))	# 輸出b,用千分位分隔並保留3位小數
print("{0:*^30}".format(strs))	# 居中且使用*填充,輸出長度為30

結果為:

a=00015
b=12,345,678.123
********I love Python!********


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM