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}