目录
一. 格式化输出的三种方式
name = "Max"
age = 18
# 最古老的用法, %s和%d表示格式
print("%s is %d years old" % (name, age)) # Max is 18 years old
# 在python 3.0后, 可以使用format()
print("{} is {} years old".format(name, age)) # Max is 18 years old
# {}中带数字,对应后面参数的索引
print("{1} is {0} years old".format(age, name)) # Max is 18 years old
# 在python 3.6, 可以使用f""
print(f"{name} is {age} years old") # Max is 18 years old
# {}中使用表达式
bags = 3
apples_in_bag = 12
print(f"There are total {bags * apples_in_bag} apples") # There are total 36 apples
# {}中使用字典
user = {"name": "Max", "age": 18}
print(f"{user['name']} is {user['age']} years old") # Max is 18 years old
# {}中使用函数
def ret_max(x, y):
return x if x > y else y
a, b = 3, 5
print(f"Max of {a} and {b} is {ret_max(a, b)}") # Max of 3 and 5 is 5
格式描述符 | 含义与作用 | 适用变量类型 |
s | 普通字符串格式 | 字符串 |
b | 二进制整数格式 | 整数 |
c | 字符格式,按unicode编码将整数转换为对应字符 | 整数 |
d | 十进制整数格式 | 整数 |
o | 八进制整数格式 | 整数 |
x | 十六进制整数格式(小写字母) | 整数 |
X | 十六进制整数格式(大写字母) | 整数 |
e | 科学计数格式,以 e 表示 ×10^ | 浮点数、复数、整数(自动转换为浮点数) |
E | 与 e 等价,但以 E 表示 ×10^ | 浮点数、复数、整数(自动转换为浮点数) |
f | 定点数格式,默认精度(precision)是6 | 浮点数、复数、整数(自动转换为浮点数) |
F | f 等价,但将 nan 和 inf 换成 NAN 和 INF | 浮点数、复数、整数(自动转换为浮点数) |
g | 通用格式,小数用 f,大数用 e | 浮点数、复数、整数(自动转换为浮点数) |
G | 与 G 等价,但小数用 F,大数用 E | 浮点数、复数、整数(自动转换为浮点数) |
二. datatime格式化
import datetime
now = datetime.datetime.now()
print(f'{now:%Y-%m-%d %H:%M:%S}') # 2022-11-09 21:57:55
格式描述符 | 含义 | 显示样例 |
%a | 星期几(缩写) | 'Sun' |
%A | 星期几(全名) | 'Sunday' |
%w | 星期几(数字,0 是周日,6 是周六) | '0' |
%u | 星期几(数字,1 是周一,7 是周日) | '7' |
%d | 日(数字,以 0 补足两位) | '07' |
%b | 月(缩写) | 'Aug' |
%B | 月(全名) | 'August' |
%m | 月(数字,以 0 补足两位) | '08' |
%y | 年(后两位数字,以 0 补足两位) | '14' |
%Y | 年(完整数字,不补零) | '2014' |
%H | 小时(24小时制,以 0 补足两位) | '23' |
%I | 小时(12小时制,以 0 补足两位) | '11' |
%p | 上午/下午 | 'PM' |
%M | 分钟(以 0 补足两位) | '23' |
%S | 秒钟(以 0 补足两位) | '56' |
%f | 微秒(以 0 补足六位) | '553777' |
%z | UTC偏移量(格式是 ±HHMM[SS],未指定时区则返回空字符串) | '+1030' |
%Z | 时区名(未指定时区则返回空字符串) | 'EST' |
%j | 一年中的第几天(以 0 补足三位) | '195' |
%U | 一年中的第几周(以全年首个周日后的星期为第0周,以 0 补足两位) | '27' |
%w | 一年中的第几周(以全年首个周一后的星期为第0周,以 0 补足两位) | '28' |
%V | 一年中的第几周(以全年首个包含1月4日的星期为第1周,以 0 补足两位) | '28' |
三. 位数
val = 1.5687
print(f'{val:.2f}') # 1.57
print(f'{val:.5f}') # 1.56870
chs = "ASDFGHJK"
print(f'{chs:.4}') # ASDF
注1:width.precision 用于不同格式类型的浮点数、复数时的含义也不同:用于 f、F、e、E 和 % 时 precision 指定的是小数点后的位数,用于 g 和 G 时 precision 指定的是有效数字位数(小数点前位数+小数点后位数)。
注2:width.precision 除浮点数、复数外还可用于字符串,此时 precision 含义是只使用字符串中前 precision 位字符。
四. 左/右/居中对齐
< 左对齐(字符串默认对齐方式)
> 右对齐(数值默认对齐方式)
^ 居中
0width 表示用0补足宽度(参考下方示例)
注1:0width 不可用于复数类型和非数值类型,width.precision 不可用于整数类型。
# Format width
num = "Nu"
sq = "squ"
cube = "cube"
print(f"{num:>2} {sq:>5} {cube:>7}")
for i in range(1, 21, 3):
print(f"{i:02} {i*i:5} {i*i*i:7}")
'''
Nu squ cube
01 1 1
04 16 64
07 49 343
10 100 1000
13 169 2197
16 256 4096
19 361 6859
'''
# Format string
s1 = 'a'
s2 = 'bb'
s3 = 'ccc'
s4 = 'dddd'
s5 = '~'
print(f'{s1:>16}')
print(f'{s2:>16}')
print(f'{s3:>16}')
print(f'{s4:>16}')
print(f'{s5:>016}') # 用0不足宽度
'''
a
bb
ccc
dddd
000000000000000~
'''
五. 数字符号格式化
a = 300
print(f"int: {a:d}") # int: 300
print(f"hex: {a:#x}") # hex: 0x12c
print(f"oct: {a:#o}") # oct: 0o454
print(f"sci: {a:e}") # sci: 3.000000e+02
b = 123
c = -123
print(f"{b:+}") # +123
print(f"{c:+}") # -123
print(f"{b:-}") # 123
print(f"{c:-}") # -123
print(f"{b: }") # 123
print(f"{c: }") # -123
数字符号相关格式描述符
注:仅适用于数值类型。
格式描述符 | 含义与作用 |
+ | 负数前加负号(-),正数前加正号(+) |
- | 负数前加负号(-),正数前不加任何符号(默认) |
空格 | 负数前加负号(-),正数前加一个空格 |
# 切换数字显示方式
注1:仅适用于数值类型。
注2:# 对不同数值类型的作用效果不同.
数值类型 | 不加#(默认) | 加# | 区别 |
二进制整数 | '1111011' | '0b1111011' | 开头是否显示 0b |
八进制整数 | '173' | '0o173' | 开头是否显示 0o |
十进制整数 | '123' | '123' | 无区别 |
十六进制整数(小写字母) | '7b' | '0x7b' | 开头是否显示 0x |
十六进制整数(大写字母) | '7B' | '0X7B' | 开头是否显示 0X |