格式化操作符右操作数可以是任意类型。
如果右操作数可以是元组的话,则其中每一个元素都会被单独的格式化,每一个值都需要一个对应的转化说明符。
当需要转换的元组作为表达式的一部分存在,那么必须将它用圆括号括起来,以避免出错。
>>> '%d plus %d equals %d'%(1,1,2)
'1 plus 1 equals 2'
基本说明转换符
包括以下部分:
1.%字符:标记转换说明符的开始。
2.转换标志:-表示左对齐,+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充
3.最小字段宽度:转换后字符至少应该具有该指定的宽度,如果是*,则宽度会从值元组中读出
4.点(.)后跟精度值:如果转换的实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度会从元组中读出。
5.字符串格式化转换类型
转换类型 | 含义 |
---|---|
d,i | 带符号的十进制整数 |
o | 不带符号的八进制 |
– | – |
u | 不带符号的十进制 |
x | 不带符号的十六进制(小写) |
– | – |
X | 不带符号的十六进制 (大写) |
e | 科学计数法表示的浮点数(小写) |
– | – |
E | 科学计数法表示的浮点数(大写) |
f,F | 十进制浮点数 |
– | – |
g | 如果指数大于-4或者小于精度值则和e相同,其他情况与f相同 |
G | 如果指数大于-4或者小于精度值则和E相同,其他情况则与F相同 |
– | – |
C | 单字符(接受整数或单字符字符串) |
r | 字符串(使用repr转化任意python对象) |
– | – |
s | 字符串(使用str转换任意python对象) |
简单转换
>>> 'width: %x cm'%50
'width: 32 cm'
>>> from math import pi
>>> 'Pi:%f...'%pi
'Pi:3.141593...'
字段宽度和精度
两个参数都是整数,字段宽度和精度通过点号(.)隔开
可以使用*(星号)作为字段宽度或者精度(或者两者都是用*),此时数值会从元组参数中读出
>>> from math import pi
>>> '%10f'%pi #字段宽为10
' 3.141593'
>>> '%10.3f'%pi #字段宽为10,精度为3
' 3.142'
>>> '%.2f'%pi #精度 2
'3.14'
>>> '%.2s'%'Python'
'Py'
>>> '%*.*s'%(10,2,'Python') #数值会从元组参数中读出
' Py'
符号、对齐和用0填充
在字符宽度和精度之前还可以放置一个‘标志’,该标志可以是0,+,-,或空格;
0表示数字将会用0进行填充。
减号(-)用来左对齐数值
空格表示正数前加上字符,在对齐正负数时很有用
加号(+)表示无论正数还是负数都需要标出符号,在对齐正负数时很有帮助
>>> from math import pi
>>> '%07.2f'%pi
'0003.14'
>>> '%-7.2f'%pi
'3.14 '
-2
>>> print('% 10d'%2 +'\n'+'% 10d' %-2)
2
-2
>>> print('%+10d'%2 +'\n'+'%+10d' %-2)
+2
-2