Python——format匯總


一、str.format

按照指定格式格式化字符串,然后返回格式化的字符串,源字符串不變。

以下是Python2.7環境。

1.1、按照位置替換

參考下面例子:

>>> s = '{0} is {1}'
>>> s.format('wo','haoren')
'wo is haoren'
>>> s
'{0} is {1}'
>>> s = '{} {} age.'
>>> s.format('wo',29)
'wo 29 age.'
>>> s = '{0} is {1},{0} {2} age.'
>>> s.format('wo','haoren',20)
'wo is haoren,wo 20 age.'

注意:如果源字符串中有{}這個大括號。那么這個字符串中的{}需要用重復的兩遍才可以。否則會報錯。

>>> s = 'zheshi {} kuo hao{{}}'
>>> s.format('da')
'zheshi da kuo hao{}'
>>> s
'zheshi {} kuo hao{{}}'
>>> s = 'zheshi {} kuo hao{}'
>>> s.format('da')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range

 

1.2、按照名字匹配替換

參考下面例子:

這個按照名字匹配可以理解為按照字典key值匹配對應的value替換到源字符串對應的key的位置。1.1中的key是位置,這里面把這個數字改為字符串索引即可。

>>> s = '{name} {age} age.{name} is {0}'
>>> s.format('student',name='wo',age=20)
'wo 20 age.wo is student'

 

1.3、按照索引替換

參考下面例子:

按照索引可以分為按照列表索引和按照字典的key取值兩種。

  • 按照列表
>>> s = '{0[0]} {0[1]} age.{0[0]} is {0[2]}'
>>> a = ['wo',20,'student']
>>> s.format(a)
'wo 20 age.wo is student'
  • 按照字典key值
>>> d = {'name':'wo','age':20,'job':'student'}
>>> s = '{0[name]} {0[age]} age.{0[name]} is {0[job]}'
>>> s.format(d)
'wo 20 age.wo is student'

 

1.4、按照對象格式化

參考下面例子:

>>> import sys
>>> import math
>>> "math.pi=={0.pi}sys.maxunicode=={1.maxunicode}".format(math,sys)
'math.pi==3.14159265359sys.maxunicode==65535'

 

1.5、格式規約——字符串格式規約

格式限定符是通過{}中帶:號帶入的。后面跟隨的可選字符對是:

填充字符X對齊字符(<左對齊,^中間對齊,>右對齊)X可選最小寬度(如果指定最大寬度,就用句號隔開並再寫一個整數)

參考下面例子:

>>> s = '{0:-^8} shi haoren'
>>> s.format('wo')
'---wo--- shi haoren'
>>> s = '{0:.{1}} shi haoren'
>>> s.format('wo',1)
'w shi haoren'
>>> s.format('wo',2)
'wo shi haoren'
>>> s.format('wo',0)
' shi haoren'
>>> s.format('wo',11)
'wo shi haoren'

1.6、格式規約——整數格式規約

格式限定符是通過{}中帶:號帶入的。后面跟隨的可選字符對是:
填充字符X對齊字符(<左對齊,^中間對齊,>右對齊,=用於在符號和數字之間進行填充)X"+"表示必須輸出符號,"-"表示只輸出負數符號," "表示正數輸出空格,負數輸出符號X可選#引導b(二進制)、o(八進制)、x(16進制)可選最小寬度(不能指定最大寬度)

參考下面例子:

把十進制數字轉換為二進制數,不足8位在前面用0補齊8位:
>>> "{0:08b}".format(2)
'00000010'
>>> "{0:08b}".format(10)
'00001010'
二進制、八進制、十六進制:
>>> "{0:b},{0:o},{0:x},{0:X}".format(10)
'1010,12,a,A'
>>> "{0:#b},{0:#o},{0:#x},{0:#X}".format(10)
'0b1010,0o12,0xa,0XA'
>>> "{0:0=8b}".format(10)
'00001010'
將10進制數轉換為8位二進制數,如果不足8位在后面用0補全:
>>> "{0:0<8b}".format(10)
'10100000'

 

二、


免責聲明!

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



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