公眾號‘小鵬長翅’同步發布
python格式化字符串的三種方式
格式化字符串其實就是字符串的拼接
普通的字符串拼接:
a = '好好學習'
b = '天天向上'
print('我們要'+a+b+'.')
>>>我們要好好學習天天向上.
下邊介紹3種python的格式化字符串的方法
方法一
使用格式化操作符%進行對字符串進行格式化
常用的操作符有:
| 符號 | 含義 |
|---|---|
| %s | 格式化字符串 |
| %d | 格式化整數 |
| %f | 格式化浮點數 |
基礎用法
a = '好好學習'
b = '天天向上'
print('我們要%s%s.'%(a,b))
>>>我們要好好學習天天向上.
-----------------------------------
print('我媳婦%d歲.'%(18))
>>>我媳婦18歲.
-----------------------------------
print('π的值為%f'%(3.1415926535898))
>>>π的值為3.141593#%f浮點型,默認保留6位小數
拓展
-
補齊:%ns
n是任意整數,不足n位,用空格補齊到n位,默認右對齊,超過n位則全部顯示
a = '好好學習'
print('我們要%6s.'%(a))
>>>我們要 好好學習.
-
左對齊
直接加個負號’即可
a = '好好學習'
print('我們要%-6s.'%(a))
>>>我們要好好學習 .
-
數字左側補0
str1='我媳婦%06d歲.'%(18)
print(str1)
>>>我媳婦000018歲.
#6代表補齊6位,0代表用0補齊
-
浮點型定保留2位小數,用0補齊10位
print('π的值為%010.2f'%(3.1415926535898))
>>>π的值為0000003.14
方法一需要注意的幾個點
1.%前面的占位符和后邊的實際值數量要一致,否則會報錯
str1='我們要%s%s.'%('好好學習')#%前邊有兩個占位符,但是值只有一個
print(str1))
>>>報錯
2.前邊用%d,后邊用字符串,報錯
前邊用%s,后邊用數字,不報錯
因為數字可以轉字符串,字符串不一定能轉數字
str1='我們要%d.'%('好好學習')#前邊%d,后邊字符串
print(str1)
>>>報錯
str2='我媳婦%s歲.'%(18)#%前邊%s,后邊數字
print(str2)
>>>我媳婦18歲.
方法二
使用{}.format進行字符串格式化
基礎用法
print('my name is {},身高:{},π的值為{}'
.format('吳彥祖',180,3.1415926535898))
>>>my name is 吳彥祖,身高:180,π的值為3.1415926535898
#每個{}按順序匹配format里的值,且自動識別類型
#不同於方法一,浮點型會完全輸出,不會默認保留6位
拓展
-
前邊空位比后邊的值多--報錯 -
前邊空位比后邊的值少--不報錯,默認按順序取值
print('my name is {},身高:{}.'.format('吳彥祖'))
>>>報錯#前邊空位比后邊的值多
print('my name is {},身高:{}.'
.format('吳彥祖',180,3.1415926535898))
#前邊空位比后邊的值少,默認按順序取值
>>>my name is 吳彥祖,身高:180.
-
{}沒有寫數字時,稱為順序取值法 -
{}內也可以輸入下標,稱為下標取值法
print('my name is {},身高:{}.'
.format('吳彥祖',180))
#順序取值法
>>>my name is 吳彥祖,身高:180.
print('my name is {1},身高:{0}.'
.format(180,'吳彥祖'))
#下標取值法
>>>my name is 吳彥祖,身高:180.
注意:順序取值法與下標取值法不能混用,否則報錯
-
補齊{:n} -
補0{:0n}
n代表補齊的位數,字符串默認左對齊,數字默認右對齊
print('my name is {:5},身高:{:05}.'
.format('吳彥祖',180))
#{:5}補齊5個字符
>>>my name is 吳彥祖 ,身高:00180.
#字符串默認左對齊,數字默認右對齊
#數字前用0補齊
-
左對齊<,居中對齊^,右對齊>
print('my name is {:>5},身高:{:^5}.'
.format('吳彥祖',180))
>>>my name is 吳彥祖,身高: 180 .
方法三
在python3.6以后的版本中,可以用f的寫法
f寫法可以認為是方法二的優化版
a = '吳彥祖'
b = 180
print(f'我叫{a},身高{b}.')#字符串前加f,{}內直接輸入值
>>>我叫吳彥祖,身高180.
方法二的拓展用法同樣適用方法三。
