python字符串的格式化

在python中常常会用到字符串的格式化,而在python的格式化中出现频率最高的就是百分号。

例如指定位置的字符串

print("这是一个%s!" % "测试")

打印结果为

这是一个测试!

百分号后的字符串就替换到了%s的位置上。

另外还有%d表示整数,%f表示浮点数,%.2f保留两位小数,比如下面:

test = "[%d]%s获得了%.2f分" % (1,"数学",59.9)
print(test)
test = "[%d]%s获得了%.2f分" % (2,"生物",0)
print(test)

打印结果为

[1]数学获得了59.90分
[2]生物获得了0.00分

每个百分号对应顺序应该一致,数据类型也应该一致(整数和浮点数可以自动转换),如果是打印百分号就需要在前面多加一个百分号

print("%.2f%%" % 99)
# 打印出来为 99.00%

但是字符串比较长,变量比较多,百分号用起来就比较繁琐了,这个时候采用format是不错的选择

# 一个相同的例子
test = "[{}]{}获得了{:.2f}分".format(1,"数学",59.9)
print(test)
# 打印为 [1]数学获得了59.90分

test = "[{0}]{1}获得了{2:.2f}分".format(1,"数学",59.9)
print(test)
# 打印为 [1]数学获得了59.90分

test = "[{2}]{1}获得了{2:.2f}分".format(1,"数学",59.9)
print(test)
# 打印为 [59.9]数学获得了59.90分

可以使用关键字

test = "[{number}]{subject}获得了{score:.2f}分".format(number=1,subject="数学",score=59.9)
print(test)
# 打印为 [1]数学获得了59.90分

或者使用字典

my_dic = {"number":1, "subject":"数学", "score":59.9}
test = "[{number}]{subject}获得了{score:.2f}分".format(**my_dic)
print(test)
# 打印为 [1]数学获得了59.90分

使用format也可以调整数据格式,或者填充数据,例如之前的{score:.2f}表示保留两位小数

print("{subject:0>5}".format(subject="数学"))
# 前面填充0至五位
# 打印结果为 000数学

print("{subject:0<5}".format(subject="数学"))
# 打印结果为 数学000

print("\"{subject:>5}\"".format(subject="数学"))
# 填充空格 结果为 "   数学"

print("{score:,}".format(score=1000000))
# 填充千分位符 打印结果为 1,000,000

format还支持二进制/八进制/十进制/十六进制转换

print('{:b}'.format(99))
# 二进制 1100011
print('{:d}'.format(99))
# 十进制 99
print('{:o}'.format(99))
# 八进制 143
print('{:x}'.format(99))
# 十六进制 63

你可能感兴趣的:(python基础)