字符串格式化用于解决字符串和变量同时输出时的格式安排。Python中有str.format(),format()和%三种格式控制的方法,但主要采用str.format()方法进行字符串的格式化。
一,str.format()方法
str.format()方法的基本使用格式:
.format()
其中模板字符串是由一系列的槽({})组成,用来控制修改字符串中嵌入值出现的位置,基本思路:将str.format()方法中逗号分隔的参数按照序号关系替换到模板字符串的槽中,槽用大括号({})来表示,如果大括号中没有序号,则按照出现顺序替换。
>>> "{}博客".format("志颖")
'志颖博客'
>>> "{2}博客 专注于{3}和{1}{0}".format("前端", "web", "志颖", "Python爬虫")
'志颖博客 专注于Python爬虫和web前端'
注意:序号是从0开始,而不是1。
槽的内部格式:
{:}
格式控制标记是用来控制参数显示时的格式,它的格式:
: <.>
::引导符号
:用于填充的单个字符
:右对齐,^居中
:槽的设定输出宽度
:英文状态下的逗号,数字的千分位分隔符,适用于整数和浮点数
<.>:浮点数小数部分的精度
:整数类型b,c,d,o,x,X,浮点数类型e,E,f,%
下面来看几个例子:
>>> s = "志颖博客"
>>> "{0:10}".format(s) # 默认左对齐
'志颖博客 '
>>> "{0:*^20}".format(s) # 居中对齐,*填充
'********志颖博客********'
<.>有两个含义,由小数开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。带有小数点的数字(类型里未用f标识带有小数点的数字),精度表示保留几位有效数字。
>>> '{:.3}'.format(9.0807776)
'9.08'
>>> '{:.3f}'.format(9.0807776)
'9.081'
>>> '{:.3}'.format('9.0807776')
'9.0'
表示输出整数和浮点数类型的格式规则。
整数类型输出格式有6种:
b:输出整数的二进制形式。
c:输出整数对应的Unicode字符。
d:输出整数的十进制形式。
o:输出整数的八进制形式。
x:输出整数的小写十六进制形式。
X:输出整数的大写十六进制形式。
浮点数类型输出格式有4种:
e:输出浮点数对应的小写字母e的指数形式。
E:输出浮点数对应的小写字母e的指数形式。
f:输出浮点数的标准浮点形式。
%:输出浮点数的百分形式。
二,format方法
在控制台利用help命令查看一下它的帮助文档。
>>> help(format)
Help on built-in function format in module builtins:
format(value, format_spec='', /)
Return value.__format__(format_spec)
format_spec defaults to the empty string
format()方法和str.format()方法用法差不多,只不过,format()方法中槽的内部只有格式控制标记,没有参数序号和引导符号。其中value是需要输出的字符串,format_spec是格式控制标记。
>>> format('aksfhakefhk','<20')
'aksfhakefhk '
>>> format('aksfhakefhk',':<20')
'aksfhakefhk:::::::::'
>>> format('lfajlajl', '*>30') # 右对齐,填充*
'**********************lfajlajl'
>>> a = 9.000778468
>>> format(a, '.4f')
'9.0008'
三,%方法
%方法类似于C语言中的格式化控制符,%s表示格式化为字符串,%d表示格式化为数字。
>>> print('%s专注于Python爬虫和web前端'%'志颖博客')
志颖博客专注于Python爬虫和web前端
>>> print('今天是%d年%d月%d日'%(2018,10,11))
今天是2018年10月11日
这三种方法虽然都能起格式化字符串的作用,但我还是推荐使用第一种方法。
喜欢 (3)or分享 (0)