python数据的格式输出_python
本文主要由Python String Format 一文翻譯整理而來,在python中使用 % 進(jìn)行格式化字符串由來已久,不過在python2.7+ 的版本中引入了新的格式化字符串的方法。雖然%號的方式依舊可用,不過在[PEP-3101] 中已有含蓄的警告稱將完全淘汰python2.6之前使用的這些方法。下面部分我們就來看下python2.7+ 的string format是怎樣的。
一、格式字符串手冊
數(shù)字格式化
下面的表格展示了使用Python的后起新秀str.format()格式化數(shù)字的多種方法,包含浮點(diǎn)數(shù)格式化與整數(shù)格式化示例。可使用print("FORMAT".format(NUMBER));來運(yùn)行示例,因此你可以運(yùn)行:print("{:.2f}".format(3.1415926));來得到第一個(gè)示例的輸出。數(shù)字格式輸出描述
3.1415926{:.2f}3.14保留小數(shù)點(diǎn)后兩位
3.1415926{:+.2f}+3.14帶符號保留小數(shù)點(diǎn)后兩位
-1{:+.2f}-1.00帶符號保留小數(shù)點(diǎn)后兩位
2.71828{:.0f}3不帶小數(shù)
5{:0>2d}05數(shù)字補(bǔ)零 (填充左邊, 寬度為2)
5{:x<4d}5xxx數(shù)字補(bǔ)x (填充右邊, 寬度為4)
10{:x<4d}10xx數(shù)字補(bǔ)x (填充右邊, 寬度為4)
1000000{:,}1,000,000以逗號分隔的數(shù)字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指數(shù)記法
13{:10d}13右對齊 (默認(rèn), 寬度為10)
13{:<10d}13左對齊 (寬度為10)
13{:^10d}13中間對齊 (寬度為10)
二、string.format()基礎(chǔ)
如下是兩個(gè)基本字符串替換的示例,符號{}是替換變量的占位符。若沒有指定格式,則直接將變量值作為字符串插入。s1 = "so much depends upon {}".format("a red wheel barrow")
s2 = "glazed with {} water beside the {} chickens".format("rain", "white")
你也可以使用變量的位置數(shù)值,在字符串中改變它們,進(jìn)行格式化時(shí),會(huì)更加靈活。如果搞錯(cuò)了順序,你可以輕易地修正而不需要打亂所有的變量。s1 = " {0} is better than {1} ".format("emacs", "vim")
s2 = " {1} is better than {0} ".format("emacs", "vim")
三、更老的格式字符串符號"%"
Python2.6之前,格式字符串的使用方法相對更簡單些,雖然其能夠接收的參數(shù)數(shù)量有限制。這些方法在Python3.3中仍然有效,但已有含蓄的警告稱將完全淘汰這些方法,目前還沒有明確的時(shí)間進(jìn)度表。[PEP-3101]
格式化浮點(diǎn)數(shù):pi = 3.14159
print(" pi = %1.2f ", % pi)
多個(gè)替換值s1 = "cats"
s2 = "dogs"
s3 = " %s and %s living together" % (s1, s2)
沒有足夠的參數(shù)
使用老的格式化方法,我經(jīng)常犯錯(cuò)"TypeError: not enough arguments for formating
string",因?yàn)槲覕?shù)錯(cuò)了替換變量的數(shù)量,編寫如下這樣的代碼很容易漏掉變量。set = "(%s, %s, %s, %s, %s, %s, %s, %s) " % ('a','b','c','d','e','f','g','h')
對于新的Python格式字符串,可以使用編號的參數(shù),這樣你就不需要統(tǒng)計(jì)有多少個(gè)參數(shù)。set = " ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) ".format('a','b','c','d','e','f','g','h')
四、更多.format()的格式字符串方法
format()函數(shù)提供了相當(dāng)多的附加特性和功能,如下是一些有用的使用.format()的技巧。
命名參數(shù)
你可以將新的格式字符串用作模板引擎,使用命名參數(shù),這樣就不要求有嚴(yán)格的順序。madlib = " I {verb} the {object} off the {place} ".format(verb="took", object="cheese", place="table")
>>> I took the cheese off the table
多次復(fù)用同一個(gè)變量
使用%格式字符串,要求變量有嚴(yán)格的次序,而.format()方法允許如上所示那樣任意排列參數(shù),也允許復(fù)用。str = "Oh {0}, {0}! wherefore art thou {0}?".format("Romeo")
>>> Oh Romeo, Romeo! wherefore art thou Romeo?
將數(shù)值轉(zhuǎn)換為不同的進(jìn)制
可以使用如下字母來將數(shù)字轉(zhuǎn)換成字母代表的進(jìn)制,decimal,hex,octal, binary。print("{0:d} - {0:x} - {0:o} - {0:b} ".format(21))
>>> 21 - 15 - 25 -10101
將格式作為函數(shù)來使用
可以將.format()用作函數(shù),這就允許在代碼中將普通文本和格式區(qū)分開來。例如,你可以在程序的開頭包含所有需要使用的格式,然后在后面使用。這也是一種處理國際化的好方法,國際化不僅要求不同的文本,且常常要求不同的數(shù)字格式。
## 定義格式 email_f = "Your email address was {email}".format
### 在另一個(gè)地方使用 print(email_f(email="bob@example.com"))
感謝 earthboundkid在reddit上提供這一技巧。
五、其他技巧
轉(zhuǎn)義大括號
使用str.format()時(shí),若你需要使用大括號,只要寫兩次就可以了:
print(" The {} set is often represented as { {0} } ".format("empty"))
>>> The empty set is often represented as {0}
六、參考資料
總結(jié)
以上是生活随笔為你收集整理的python数据的格式输出_python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 徐小平:全员拥抱区块链是内部分享 1比特
- 下一篇: matlab实现长除法,【网安智库】基于