https://blog.csdn.net/sunxb10/article/details/81036693
我觉得这篇很详细,在这篇文章的基础上我想进一步总结一下字符串中数字的格式化输出,
python到现在总共有三种字符串输出的方法,一种是从c中借鉴过来的
In [11]: print("%6.1f, %d"%(10000, 10)) 10000.0, 10
官方推荐的并不是这种方法,在实际中我们也应该尽量使用.format方法
其次是.format输出,
{!r: ^+#030.1,f}
这个表达式是不正确的,只是我为了说明而写的,
!r告诉编译器不要转义,可以重现变量所代表的对象,类似于正则中的r字符串,类似于方法一种的%r,
:后面带的是填充符,默认是空格“ ”。
^表示居中,<表示数字靠左,>表示居右
+表示负数前加-,正数前加+;-表示负数前加-,正数不加(默认), 空格表示负数前加-,正数前加 空格;
#表示前方是否加标识符,诸如0x之类的
030.1表示总共占30位,小数点后保留一位小数,前方+0表示空余处补0,要注意的是即使是整数也会在空余处补0
,表示分隔符,小数的话不能和前面的030.1一起用不然会报错(不确定是不是我的格式不对),有_,两种,_只能用于十进制,浮点数之外的格式,十进制三个一空,其他四个一加
f指数据类型
最后用7个7做个示范,冥冥之中自有7意
In [25]: a = 7777777
In [26]: f"{a:>+#015_o}"
Out[26]: '000+0o3552_6761'
In [27]: f"{a:< #015_X}"
Out[27]: ' 0X76_ADF100000'
In [28]: f"{a:> #030_b}"
Out[28]: ' 0b111_0110_1010_1101_1111_0001'