文章目录
- 格式化函数format
- 常用格式
- 数字格式化
格式化函数format
Python2.6 开始,新增了一种格式化字符串的函数 str.format()
,它增强了字符串格式化的功能。相对于老版的%
格式方法,它有很多优点:
- 在
%
方法中%s
只能替代字符串类型,而在format()
中不需要理会数据类型; - 单个参数可以多次输出,参数顺序可以不相同;
- 填充方式十分灵活,对齐方式十分强大;
- 官方推荐用的方式,
%
方式将会在后面的版本被淘汰。
常用格式
以下开始实例介绍:
# 不设定指定位置,按照默认位置
print('{} {} {}'.format('i', 'am', 'Groot'))
输出:
i am Groot
# 设定指定位置
print('{1} {2} {0}'.format('Groot', 'i', 'am'))
输出:
i am Groot
# 直接设定参数
print('{Subject} {Verb} {Object}'.format(Subject='i', Verb='am', Object='Groot'))
输出:
i am Groot
# 通过字典设定参数
dir_case = {'Subject':'i', 'Verb':'am', 'Object':999}
print('{Subject} {Verb} {Object}'.format(**dir_case))
输出:
i am 999
# 通过列表设定参数
list_case1 = ['i', 'am']
list_case2 = ['Groot', 666]
print('Subject:{0[0]} Verb:{0[1]} Object:{1[0]} 999:{1[1]}'.format(list_case1, list_case2))
输出:
Subject:i Verb:am Object:Groot 999:666
# 通过对象设定参数
class setValue(object):
def __init__(self, value):
self.value = value
my_value1 = setValue('i am Groot')
my_value2 = setValue('i am 999')
print('value1是:{0.value} \nvalue2是:{1.value}'.format(my_value1, my_value2))
输出:
value1是:i am Groot
value2是:i am 999
数字格式化
# 数字格式化
print('数字为:{:.3f}'.format(3.1415))
输出:
数字为:3.142
其他格式数字的方法:
数字 | 格式 | 输出 | 描述 |
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} | 1,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) | 1011 11 13 b 0xb 0XB | 2进制 10进制 8进制 16进制 16进制(带0x 16进制(带0X |
^
,<
, >
分别是居中、左对齐、右对齐,后面带宽度, :
号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+
表示在正数前显示 +
,负数前显示 -
; (空格)表示在正数前加空格
b
、d
、o
、x
分别是二进制、十进制、八进制、十六进制。
此外我们可以使用大括号{}
来转义大括号,如下实例:
# 采用{}转义
print ("{} 是 {{银护的台词}}".format("i am Groot"))
输出:
i am Groot 是 {银护的台词}