准备工作:
- %c: 格式化字符及其ASCII码
- %s: 格式化字符串(常用)
- %d: 格式化整数(常用)
- %u: 格式化无符号整型(常用)
- %o: 格式化无符号八进制数
- %x: 格式化无符号十六进制数(常用)
- %X: 格式化无符号十六进制数(大写)
- %f: 格式化浮点数字,可指定小数点后的精度(常用)
- %e: 用科学计数法格式化浮点数(常用)
- %E: 作用同%e,用科学计数法格式化浮点数
- %g: %f和%e的简写
- %G: %F 和 %E 的简写
- %p: 用十六进制数格式化变量的地址
- %%:格式化百分号标记
- ^:格式化居中对齐(常用)
- >:格式化右对齐(常用)
- <:格式化左对齐(常用)
- +:格式化显示正负号(常用)
声明三个变量:姓名(string)、年龄(int)、身高(float)
age = 99
height = 1.85
# 我是:Python 当打之年, 年龄:99, 身高:1.850000m
print(‘我是:%s, 年龄:%d, 身高:%.2fm’ % (name,age,height))
# 我是:Python 当打之年, 年龄:99, 身高:1.85m
注意:浮点数默认精度为6,即小数点后6位。
%x — hex 十六进制
%d — dec 十进制
# age_hex = 63, age_dec = 99, age_oct = 143
print(‘%10.3f’ % pi) # 3.142
# 宽度为10,右对齐,保留3位小数点
print(‘%-10.10f’ % pi) # 3.1415926000
# 宽度为10,左对齐,保留小数点后10位(不足10位补0)
# 输出10个字符,如果不足,输出全部
print (“%.*s” % (6,name)) # Python
# 左对齐,取6个字符
print (“%10.6s” % name) # Python
# 右对齐,宽度为10,取6个字符
1.4 正负号
# 宽度为10,右对齐,保留3位小数点
a = -pi
print(‘%+-10.3f’ % a) # -3.142
# 宽度为10,左对齐,保留3位小数点
不设置位置参数时,参数默认从0 开始编号,依次为0,1,2,3……:
# 我是:Python 当打之年, 年龄:99, 身高:1.85m
2.1.2 设置位置
设置位置参数时,参数根据实际编号对应变量索引,注意{}中编号:
# 我是:Python 当打之年, 年龄:99, 身高:1.85m
print(‘我是:{0}, 年龄:{1}, 身高:{1}m’.format (name,age,height))
# 我是:Python 当打之年, 年龄:99, 身高:99m
print(‘我是:{0}, 年龄:{2}, 身高:{1}m’.format (name,age,height))
# 我是:Python 当打之年, 年龄:1.85, 身高:99m
2.1.3 单变量参数
可以将索引编号设置为关键字,关键字需要有相应赋值:
# 我是:Python 当打之年, 年龄:99, 身高:1.85m
2.1.4 列表参数
参数也可以是列表,注意多维列表需要指定为一维列表,'{0[0]}’, ‘{0[1]}’, ‘{0[2]}’ 中’0’是必须的:
print(‘我是:{0[0]}, 年龄:{0[1]}, 身高:{0[2]}m’.format(lst[0]))
# 我是:Python 当打之年, 年龄:99, 身高:1.85m
print(‘我是:{0[0]}, 年龄:{0[1]}, 身高:{0[2]}m’.format(lst[1]))
# 我是:Python 当打之年, 年龄:18, 身高:1.85m
2.1.5 字典参数
当参数为字典时,可以使用关键字:
print(‘我是:{name}, 年龄:{age}, 身高:{height}m’.format(**dic))
# 我是:Python 当打之年, 年龄:99, 身高:1.85m
2.2 宽度、对齐、精度、填充
宽度为10,居中、居右、居左对齐:
print(‘{:^10d}’.format(a)) # 宽度10,居中
print(‘{:>10d}’.format(a)) # 宽度10,居右
print(‘{:<10d}’.format(a)) # 宽度10,居左
# 66
# 66
# 66
保留2、3位有效数字,百分比以及指数计数法:
print(“{:.2f}”.format(pi)) # 不带符号
print(“{:+.3f}”.format(pi)) # 带符号
print(“{:.4%}”.format(pi)) # 百分比
print(“{:.2e}”.format(pi)) # 指数计数法
# 3.14
# +3.142
# 314.1593%
# 3.14e+00
可以使用不同字符进行填充(补齐):
print(‘{:a>10d}’.format(a)) # 宽度10,居右
print(‘{:0<10d}’.format(a)) # 宽度10,居左
# 0000660000
# aaaaaaaa66
# 6600000000
print(‘{:0^30}’.format(name)) # 宽度30,居中
print(‘{:0>30}’.format(name)) # 宽度30,居右
print(‘{:0<30}’.format(name)) # 宽度30,居左
# 000000000Python 当打之年0000000000
# 0000000000000000000Python 当打之年
# Python 当打之年0000000000000000000
print(‘Hello {0:>{1}} ‘.format(name,20))
# Hello Python 当打之年
2.3 千位分隔符
print(‘{:,}’.format(1234567.1234567))
# 100,000,000
# 1,234,567.1234567
print(‘{0:-^20,}’.format(1234567.1234567))
print(‘{0:->20,}’.format(1234567.1234567))
print(‘{0:-<20,}’.format(1234567.1234567))
# -1,234,567.1234567–
# —1,234,567.1234567
# 1,234,567.1234567—
3.1 单变量参数
变量名直接做参数,比如name, age, height,注意不需要单引号或双引号:
# 我是:Python 当打之年, 年龄:99, 身高:1.85m
3.2 表达式参数
# 计算结果是:22
a = 90
b = 9
print(f’计算结果是:{a*b + a + b}’)
# 计算结果是:909
3.3 函数参数
普通函数作为参数、lambda函数作为参数:
print(f’我是:{name}’)
print(f’我是:{name.lower()}’)
# 我是:PYTHON当打之年
# 我是:python当打之年
a = 90
b = 9
print(f’计算结果是:{(lambda x,y:x+y)(a,b)}’)
# 计算结果是:99
宽度为10,精度为小数点后2、3、4位,居中、居右、居左对齐,填充方式和format一样可以选择不同的字符:
print(f'{pi:^10.2f}’)
print(f'{pi:>10.3f}’)
print(f'{pi:<10.4f}’)
# 3.14
# 3.142
# 3.1416
print(f'{pi:a^10.2f}’)
print(f'{pi:a>10.3f}’)
print(f'{pi:a<10.4f}’)
# aaa3.14aaa
# aaaaa3.142
# 3.1416aaaa
print(f'{a:,f}’)
print(f'{a:_f}’)
# 1,234,567.123457
# 1_234_567.123457
总结:
缺点:新的格式化方式,有些语句格式较前两中复杂一些。
上面三种格式化方式我们都可以使用,大家在学习过程中,可以根据自己的实际情况选择格式化方式,比较推荐f-string方式。
转载请注明:XAMPP中文组官网 » 超全解析Python三种格式化输出方式[% / format / f-string]