每天开心一点

Python之format详解

2019-01-08 15:25:00    六月    1148    来源: http://www.runoob.com/python/python-numbers.html

1.通过位置
'a1 = {} a2= {}  a3= {}'.format('first','second','third')  #{}不带参数
'a1 = first a2= second  a3= third'
'a1 = {1} a2= {0}  a3= {2}'.format('first','second','third') #{}带位置参数的
'a1 = second a2= first  a3= third'注意如果{}要带参数,可以将format看成一个函数输入的值是函数的参数,这些输入的值可以看成一个元组,{0} == tuple[0] 同样他们也不能越界
2.通过关键字参数
'your name is {name} , age is {age}'.format(name='jack',age=87)
'your name is jack , age is 87'
'your name is {name} , age is {age}'.format(age=87,name='jack') #同样和位置无关
'your name is jack , age is 87'
3.通过对象属性
class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age

p = Person('Tom',18)
'name = {p.name} age = {p.age}'.format(p=p)
'name = Tom age = 18'
4.通过下标
s1 = [1,'23','tom']
s2 = ['s2.1','s2.2','s2.3']'{0[1]}  {0[2]} {1[2]} {1[0]}'.format(s1,s2)
'23  tom s2.3 s2.1'
5.格式化输出(重点)
 格式限定符
 语法是{}中带:号)
 {:对齐方式  填充}
 填充与对齐
 填充常跟对齐一起使用
 ^、<、>分别是居中、左对齐、右对齐,后面带宽度
 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
5.1对齐与填充
'输出左对齐定长为10位  [{:<10}]'.format('12') #默认填充空格的
'输出左对齐定长为10位  [12        ]'
'输出右对齐定长为10位  [{:>10}]'.format('12') #默认填充空格的
'输出右对齐定长为10位  [        12]'
'输出右对齐定长为10位  [{:0>10}]'.format('12') #修改填充,填充只能是一个ASCII字符
'输出右对齐定长为10位  [0000000012]'
'输出居中对齐定长为10位,填充x  [{:x^10}]'.format('12') #修改填充,填充只能是一个ASCII字符
'输出居中对齐定长为10位,填充x  [xxxx12xxxx]'
5.2浮点小数输出
'{:.2f}'.format(1233442.23453) #通常都是配合 f 使用,其中.2表示长度为2的精度,f表示float类型
'1233442.23'
'{:,}'.format(9987733498273.0432) #使用逗号金额分割符
'9,987,733,498,273.043'
5.3进制及其他显示
b : 二进制
d :十进制
o :八进制
x :十六进制
!s :将对象格式化转换成字符串
!a :将对象格式化转换成ASCII
!r :将对象格式化转换成repr
'10 二进制 :{:b}'.format(10)
'10 二进制 :1010'
'10 十进制 :{:d}'.format(10)
'10 十进制 :10'
'10 八进制 :{:o}'.format(10)
'10 八进制 :12'
'10 十六进制 :{:x}'.format(10)
'10 十六进制 :a'
'{!s}'.format(10) #格式化转换
'10'
'{!a}'.format('1000') #格式化转换
"'1000'"
'{!r}'.format('1000') #格式化转换
"'1000'"

python 中str format 格式化数字补0方法
>>> "{0:03d}".format(1)
'001'
>>> "{0:03d}".format(10)
'010'
>>> "{0:03d}".format(100)
'100'
https://www.cnblogs.com/sthinker/p/7456034.html
======================================

python之字符串格式化(format)
用法:
  它通过{}和:来代替传统%方式
 
1、使用位置参数
要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表
>>> li = ['hoho',18]
>>> 'my name is {} ,age {}'.format('hoho',18)'my name is hoho ,age 18'
>>> 'my name is {1} ,age {0}'.format(10,'hoho')'my name is hoho ,age 10'
>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')'my name is hoho ,age 10 hoho'
>>> 'my name is {} ,age {}'.format(*li)'my name is hoho ,age 18'
 
2、使用关键字参数
要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可
>>> hash = {'name':'hoho','age':18}
>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)'my name is hoho,age is 19'
>>> 'my name is {name},age is {age}'.format(**hash)'my name is hoho,age is 18'
 
3、填充与格式化
:[填充字符][对齐方式 <^>][宽度]
>>> '{0:*>10}'.format(10)  ##右对齐
'********10'
>>> '{0:*<10}'.format(10)  ##左对齐
'10********'
>>> '{0:*^10}'.format(10)  ##居中对齐
'****10****'
 
4、精度与进制
>>> '{0:.2f}'.format(1/3)'0.33'
>>> '{0:b}'.format(10)    #二进制'1010'
>>> '{0:o}'.format(10)     #八进制'12'
>>> '{0:x}'.format(10)     #16进制'a'
>>> '{:,}'.format(12369132698)  #千分位格式化'12,369,132,698'
 
5、使用索引
>>> li
['hoho', 18]
>>> 'name is {0[0]} age is {0[1]}'.format(li)
'name is hoho age is 18

https://www.cnblogs.com/benric/p/4965224.html