python格式符
% 转换标识符包含两个或以上的字符,而且遵循以下顺序
- 以%开头
- mapping key(可选),格式化别名,用一对括号+变量名组成
- 转换标识(可选)
- 最小宽度(可选),如果指定宽度,不足的话以占位符填充。
- 精度(可选)在
'.'
后面指定 - 长度(可选)
- 转换的类型(必),比如
int
In [12]: print ('%(language)s has %(number)03d quote types.' % {'language': 'Python', 'number': 2})
Python has 002 quote types.
转换标识 | 含义 |
---|---|
# | 转换标识起始 |
0 | 数字填充符 |
- | 左对齐符号(如果指定了0,会忽略0) |
“ | 空格占位符 |
+ | 在数字前面显示一个+ (忽略空格标识) |
In [13]: print ('%(price)-.2f' % {'price': 0.1292})
# price为mapping_key, -为转换标识,.2为精度, f为转换的类型
转换类型 | 含义 |
---|---|
d | Signed integer decimal. |
i | Signed integer decimal. |
o | Signed octal value.8进制表示 |
u | Obsolete type – it is identical to ‘d’(废弃) |
x | Signed hexadecimal (lowercase) 16进制. |
X | Signed hexadecimal (uppercase). |
e | Floating point exponential format (lowercase).指数表示 |
E | Floating point exponential format (uppercase).大写指数表示 |
f | Floating point decimal format. 浮点数,默认是6位 |
F | Floating point decimal format. |
g | Floating point format. Uses lowercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. 根据值的类型,选择%e或者%f |
G | Floating point format. Uses uppercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. |
c | Single character (accepts integer or single character string). |
r | String (converts any Python object using repr()). |
s | String (converts any Python object using str()). |
a | String (converts any Python object using ascii()). |
1、格式化十进制数字
In [18]: '%d' % 2
Out[18]: '2'
In [19]: '%02d' % 2
Out[19]: '02' # 格式化成2位字符串,不足2位时,使用0作为占位符
In [20]: '%2d' % 2
Out[20]: ' 2' # 不足2位使用,使用空格作为占位符
2、格式化浮点数
In [25]: '%f' % (1/3.0)
Out[25]: '0.333333' # 默认保留6位
In [26]: '%.2f' % (1/3.0)
Out[26]: '0.33' # 指定浮点数精度为2
In [27]: '%.2f' % 0.1378
Out[27]: '0.14' # 四舍五入
3、格式化字符串
In [60]: '%s' % 'test'
Out[60]: 'test'
In [61]: '{name}'.format(name=1)
Out[61]: '1' # python 2.6引入,可以根据名字以及顺序format,也不用转换类型
In [63]: '%r' % 1000
Out[63]: '1000'
In [64]: '%r' % 'aa'
Out[64]: "'aa'" # 注意这里的内容
repr==%r所以在日志中使用居多,repr 目标是准确性,面向机器。
str==%s 最常用, str 目标是可读性,面向程序员。