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}'