从Python2.6开始,就增加了一种格式化字符串的str.format()方法,这种方法方便了用户对字符串进行格式化处理。
1.模板字符串与format()方法中参数的对应关系
str.format()方法中的 str 被称为模板字符串,其中包括多个由“{}”表示的占位符,这些占位符接收 format()方法中的参数。 str 模板字符串与format()方法中的参数的对应关系有以下3种情况
- 位置参数匹配
在模板字符串中,如果占位符{}为空(没有表示顺序的序号),将会按照参数出现的先后次序进行匹配。如果占位符{}指定了参数的序号,则会按照序号替换对应参数。 - 使用键值对的关键字参数匹配
format()方法中的参数用键值对形式表示时,在模板字符串中用“键”来表示。 - 使用序列的索引作为参数匹配
如果 format ()方法中的参数是列表或元组,可以用其索引(序号)来匹配。
例 3-3模板字符串与 format (方法中的参数关系:
>>>
>>> "{} is {} yesrs old".format("Rose",18)
'Rose is 18 yesrs old'
>>> "{0} is {1} yesrs old".format("Rose",18)
'Rose is 18 yesrs old'
>>> "Hi,{0}!{0} is {1} yesrs old".format("Rose",18)
'Hi,Rose!Rose is 18 yesrs old'
>>>
>>>
>>> "{name} was born in {year},He is {age} years old".format(name="Rose",age=18,year=2000)
'Rose was born in 2000,He is 18 years old'
>>>
>>>
>>> student=["Rose",18]
>>> school=("Zhejiang","LNNU")
>>> "{1[0]} was born in {0[0]},She is {1[1]} years old".format(school,student)
'Rose was born in Zhejiang,She is 18 years old'
2.模板字符串 str 的格式控制
语法格式:
[[fill]align][sign][width][,][.precision][type]
模板字符串参数的含义如下
- fill :可选参数,空白处填充的字符。
- align :可选参数,用于控制对齐方式,配合 width 参数使用, align 参数的取值如下
<:内容左对齐。
>:内容右对齐(默认)。
^:内容居中对齐。
+:在正数数值前添加正号,在负数数值前添加负号。
-:在正号不变,在负数数值前添加负号。
空格:在正数数值前添加空格,在负数数值前添加负号。
- width :可选参数,指定格式化后的字符串所占的宽度。
- 逗号(,):可选参数,为数字添加千分位分隔符。
- precision :可选参数,指定小数位的精度。
- type :可选参数,指定格式化的类型。
- 整数常用的格式化类型包括以下几种:
b ,将十进制整数自动转换成二进制表示,然后格式化;
c 、将十进制整数自动转换为其对应的 Unicode 字符;
d ,十进制整数;
o,将十进制整数自动转换成八进制表示,然后格式化;
x ,将十进制整数自动转换成十六进制表示,然后格式化(小写 x );
X ,将十进制整数自动转换成十六进制表示,然后格式化(大写 X )。
e ,转换为科学计数法(小写 e )表示,然后格式化;
E ,转换为科学计数法(大写 E )表示,然后格式化;
f ,转换为浮点型(默认保留小数点后6位)表示,然后格式化;
F ,转换为浮点型(默认保留小数点后6位)表示,然后格式化;
%,输出浮点数的百分比形式。
例 3-4 使用str.format()方法格式化字符:
>>> prnit('{:*>8}'.format('3.14'))
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
prnit('{:*>8}'.format('3.14'))
NameError: name 'prnit' is not defined
>>> print('{:*>8}'.format('3.14'))
****3.14
>>> print('{:*<8}'.format('3.14'))
3.14****
>>> print('{0:^8},{0:*^8}'.format('3.14'))
3.14 ,**3.14**
>>> print('{0:e},{0:.2e}'.format(3.14159265758))
3.141593e+00,3.14e+00
|