python的format方法使用详解

版权声明:版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/swinfans/article/details/83076617

简介

从python2.6开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过{}:来代替以前的%

format方法可以接受无限个参数,位置可以不按顺序。

使用示例

不指定format方法的关键字参数

>>> "{} {}".format('hello', 'world') # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

指定format方法的关键字参数

>>> print("Name: {name}, Age: {age}".format(name='bob', age=22))
Name: bob, Age: 22

通过字典设置参数

employee = {'name': 'bob', 'age': 22}
print("Name: {name}, Age: {age}".format(**employee))

输出为:

Name: bob, Age: 22

通过列表索引设置参数

employee = ['bob', 22]
print("Name: {0[0]}, Age: {0[1]}".format(employee))

输出为:

Name: bob, Age: 22

通过对象设置参数

class Employee(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
employee = Employee('bob', '22')
print("Name: {0.name}, Age: {0.age}".format(employee))

输出为:

Name: bob, Age: 22


数字的格式化输出

数字 格式 输出 描述
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:+.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 宽度为2,填充字符为0,填充左边
5 {:x<4d} 5xxx 宽度为4,填充字符为x,填充右边
10 {:x<4d} 10xx 宽度为4,填充字符为x,填充右边
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
1328723840 {:.3e} 1.329e+09 指数记法
13 {:x>10d} xxxxxxxx13 右对齐(默认对齐方式)(宽度为10,填充字符为x)
13 {:<10d} 13 左对齐,宽度为10,默认填充字符为空格
13 {:x^10d} xxxx13xxxx 中间对齐,宽度为10,填充字符为x
255 {:f} 255.000000 转为浮点数,默认保留小数点后6位
255 {:b} 11111111 转为二进制
255 {:10o} 377 转为八进制,宽度为10,填充字符为空格
255 {:x} ff 转为十六进制
255 {:#x} 0xff 转为十六进制
255 {:#X} 0XFF 转为十六进制
0b11111111 {:d} 255 转为十进制

字符串的格式化输出

熟悉了数字的格式化输出,那么字符串的格式化输出就比较简单了,两者没有太多区别,只需要用s标记替换fdoxb标记即可

>>> name = 'bob'
>>> # 宽度为10,左对齐,填充字符为默认的填充字符空格
>>> "{:<10s}".format(name)
'bob       '
>>> # 宽度为10,右对齐,填充字符为x
>>> "{:x^10s}".format(name)
'xxxxxxxbob'
>>> # 宽度为10,中间对齐,填充字符为x
>>> "{:x^10s}".format(name)
'xxxbobxxxx'

猜你喜欢

转载自blog.csdn.net/swinfans/article/details/83076617