Python2.6开始,新增了一种格式化字符串的函数str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 %
format函数可以接受不限个参数,位置可以不按顺序。
>>>"{} {}".format("hello","world")#不指定位置,默认按照format里面的顺序
'hello world'
>>>"{0} {1}".format("hello","world")#指认位置
'hello world'
>>>"{1}{0}{1}".format("hello","world")#指认位置,如果不加空格,就会挨在一起输出
'worldhelloworld'
>>>"{1} {0} {1}".format("hello","world")#指认位置,加空格
'world hello world'
format也可以设置参数
>>>print("姓名:{name},身高:{height}".format(name="东阳",height="180"))
姓名:东阳,身高:180
#通过字典设置参数
>>>stu={"name":"东阳","height":"180"}
>>>print("姓名:{name},身高:{height}".format(**stu))
姓名:东阳,身高:180
#通过列表索引设置参数
>>>my_list=['东阳','180']
>>>print("姓名:{0[0]},身高:{0[1]}".format(my_list))#这里的0是必须有的
姓名:东阳,身高:180
#一定得记住format是跟{}配套出现的
也可以向str.format()传入对象
class AssignValue(object):
def __init__(self,value):
self.value=value
my_value=AssignValue(6)
print('value为:{0.value}'.format(my_value))
输出为:
value为:6
数字格式化
数字 | 格式 | 输出 | 描述 |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:-.2f}或者 {:+.2f} 两个显示结果都为-1.00 | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零(填充左边,宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x(填充右边,宽度为4) |
10 | {:x<4d} | 10xx | 数字补x(填充右边,宽度为4) |
10000000 | {:,} | 10,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式(这里是保留两位小数) |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
13 | {:>10d} | 13 | 右对齐(默认,宽度为10,这里空位用空格补齐) |
13 | {:<10d} | 13 | 左对齐(宽度为10) |
13 | {:^10d} | 13 | 中间对齐(宽度为10) |
11 | '{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:X}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11) | '1011' '11' '13' 'b' 'B' '0xb' '0XB' | 进制 |
^ , < , >分别是居中、左对齐、右对齐,后面带宽度, : 后面带填充的字符,只能是一个字符,不指定则默认为空格填充
+ 表示在正数前显示 + ,负数前显示 - 。 (空格)表示在正数前加空格
b 、 d 、 o 、 x 分别是二进制、十进制、八进制、十六进制。 # 是显示几进制,另外只有十六进制的字母可以转换大小写
另外也可以使用 {} 来转义大括号:
>>>print("{}对应的位置为{{0}}".format("东阳"))
东阳对应的位置为{0}
知识来源: