python3 str.format()的使用

基本格式

{字段名!转换字段:格式说明符}

字段名:省略;数字;变量名

'name is {}, age is {}'.format('peter',25)
'name is {1}, age is {0}'.format(25, 'peter')
'name is {name}, age is {age}'.format(name='peter',age='25')

转换字段: !s !r !a

s:传递参数之前先对参数调用 str()
r:传递参数之前先对参数调用 repr()
a:传递参数之前先对参数调用 ascii()

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def __repr__(self):
        return 'Person({0.name!r}, {0.age!r})'.format(self)
    
    def __str__(self):
        return '({0.name!s}, {0.age!s})'.format(self)
    
person = Person('peter', 25)
'this person is {!r}'.format(person)
'this person is {!s}'.format(person)
'this person is {!a}'.format('皮特')

# result
"this person is Person('peter', 25)"
'this person is (peter, 25)'
"this person is '\\u76ae\\u7279'"

格式说明符

填充与对齐 :[填充字符][对齐方式 <^>][宽度]

'{:*>10}'.format(10) # 右对齐 '********10'
'{:*<10}'.format(10) # 左对齐 '10********'
'{:*^10}'.format(10) # 居中对齐 '****10****'

精度与数据类型

  • 默认的数据类型是 字符串 s
'{:.3}'.format('23333333')  # '233'
'{:.3s}'.format('23333333') # '233'
  • 进制转换
'{:b}'.format(20) # 二进制 '10100'
'{:o}'.format(20) # 八进制 '24'
'{:x}'.format(20) # 十六进制 '14'
  • 浮点数和科学计数法
'{:e}'.format(1234567.1234567)    # 科学计数法 '1.234567e+06'
'{:.2e}'.format(1234567.1234567) # '1.23e+06'
'{:.3f}'.format(1234567.1234567)  # 浮点数 '1234567.123'
'{:%}'.format(1)  # 百分数 '100.000000%'
'{:.0%}'.format(1) # '100%'

花括号转译

  • 使用花括号转译花括号
'{{{}}}'.format('peter') # '{peter}'
posted @ 2019-04-07 09:02  Peterer~王勇  阅读(2122)  评论(0编辑  收藏  举报