想写脚本把一堆文件名前面添加上编号,类似于001,002这种,但如果直接使用数值呢,前面是没有0的,这时就需要用到python的字符串格式化功能。
格式化数值
代码:
"{0:03d}".format(7)
# '007'
如果只想输出2位字符串?
"{0:02d}".format(7)
# '07'
{0中的这个0表示的是参数序号。填充什么样的字符呢?冒号后面的就是要填充的样子。02d中的0表示用0来填充剩余空间,长度为2,d表示把数值转换成十进制,digital的简写。
来看看更多的实例。
后面不带0:
"{0:2d}".format(7)
# ' 7'
注意,格式化后的字符串前面有个空格,长度依然是2,或者你想要个16进制的?
"{0:03x}".format(10)
# '00a'
这里的x表示把数值转换成16进制的,依然是用0填充。
转换的类型要与你给定的参数相匹配,如果你转换字符串到十进制?
>>> "{0:03d}".format('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
直接报错!
格式化字符串并填充指定符号
想输出字符串带=号的?使用三种对齐模式,^为居中,>为左对齐,<为右对齐,长度为20。
>>> "{0:=^20}".format('python')
'=======python======='
>>> "{0:=>20}".format('python')
'==============python'
>>> "{0:=<20}".format('python')
'python=============='
对齐符号^<>不能少,否则:
>>> "{0:=20}".format('python')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: '=' alignment not allowed in string format specifier
平时的开发中这些方法基本够用了,其它更多资料,请参考官网:
https://docs.python.org/3/library/string.html#formatstrings