Py输出专题

%-formatting 输出

标准格式:

“在百分号后插入 %s 数据 %s 的写法”%(var1,var2)

文档格式:

"... %[key][flags][width][.precision][length type]conversion type ..." % values

文档格式翻译过来就是: %<映射键><Flags><宽度><精度><长度类型><格式符号>

示例:%(float)-10.2f"%{"float":3.1415} !:没有使用 Length Type

LengthType极少用,不收录

映射键用法:

“ 使用键值 %(name)s 的形式来赋值 %(sex)s ”%{“name” : ”名字”, ”sex” : ”性别”}

Flags用法:

常见的Flag:

Flags 效果
0 与width搭配使用,填充
- 与width搭配使用,结果左对齐
(空格) 带符号正数或空字符串之前留一个空格方便对齐
+ 展示正负号

width用法

就是很常见的限制长度的用法

比如%10s就用到了width

%-10s就是<flags>+<width>的结合用法

格式符号:

格式符号 转换
%c 字符(支持Unicode编码的字符)
%s 字符串
%d 有符号十进制整数
%u 无符号十进制整数
%o 八进制整数
%x 十六进制整数(小写字母0x)
%X 十六进制整数(大写字母0X)
%f 浮点数
%e 科学计数法(小写e
%E 科学计数法(大写E
%g %f 和 %e 的简写
%G %f和 %E 的简写

支持格式:

示例<默认右对齐> 意义<不足会补充占位符>
%10s 字符串限定长度10
%-10s 左对齐
%.2s 截取 2 位字符串
%10.2s 10长度,截取 2 位字符串
%.2f 限制 2 位小数位

format 格式化输出

标准格式:

“在花括号中插入内容{ }”.format(var)

重要格式

对一个整数使用千分位分隔符:

1
2
a = 123456
print("{:,}".format(a))

如果同时使用居中、填充之类的操作符,需要这么写:

1
2
a = 123456
print("{:#^15,}".format(a))

其中,千分分隔符在最后

f-string 格式化输出

在Python 3.6 中新增的格式化输出,比前两个更直观而且更高效。在format基础上优化而来,使用格式大差不差:

基础语法

1
2
3
4
5
6
7
8
name = 'ZhangSan'
print(f"Hello,My name is {name}")

num = 2
print(f"I have {num} Apple(s)")

Price = '9pounds 15 pennies'
print(f"The Clouths's Pirce is {Price}")

表达式求值与函数调用

显然大括号内也可以调用函数或者直接求取表达式结果:

1
2
3
4
5
6
7
print(f"2 plus 3 is equal {2+3}")

name = 'LiHua'
print(f"His name is {name.lower()}") #小写名字

import math
print(f"π value is equal {math.pi}")

插入匿名函数lambda来完成更加复杂的运算:

1
2
3
A = 123
print(f"{(lambda x:x%10)(A):.2f}")
# (lambda x:x)(Y) 可以直接往匿名函数传参

f’在花括号中直接插入内容并规定格式{var:.2f}

格式化使用

对齐方式 字符填充 字符数限制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 不对齐(默认右对齐),只填充(默认空格填充)
a = 123
f"{a:10}"

# 填充字符串,默认使用空格作为填充符
default = 'LiHua'
f"{default:>20}"

# 指定填充符号 _ ,右对齐限制20字符

f"{default:_>20}:

# 左对齐和居中, _ 填充,10字符

f"{default:_^10}" # 居中
f"{default:_<10}" # 左对齐

符号显示

1
2
3
4
5
6
7
# 显示数的符号
a = 10
b = -1
f"{a:+},{b:+}" # 会显示负号和正号

f"{a:-},{b:-}" # 只显示负号
f"{a: },{b: }" # 显示负号,正数前会加空格

精度描述 截断字符串

1
2
3
4
5
6
7
8
9
# 默认精度为 6 位小数
a = 123.456
f"{a:.2f}" #两位小数

f"{a:2f}" #会补全到6位小数,限制字符数无效

name = 'LiHua'
f"{name:5.2}"
#总长是5,但是只选用头2个英文字符,余下用空格补齐

提取时间格式

1
2
3
4
5
import datetime
a = date.today()
# 得到一个时间对象

f"{a:%Y-%m-%d}" 将时间对象输出成 YYYY-MM-DD 方式