本文介绍 Python 中的字符串格式化的参数语法。
格式规格 Format Spec 用于指定 Python 字符串的格式。它的参数顺序及用法如下:
format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]
其中
fill ::= <any character>
align ::= "<" | ">" | "=" | "^"
sign ::= "+" | "-" | " "
width ::= digit+
grouping_option ::= "_" | ","
precision ::= digit+
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
格式规格参数详解
fill
补齐空格的字符
align
对齐方式
选项 | 意义 |
---|---|
'<' |
强制字段在可用空间内左对齐(这是大多数对象的默认值)。 |
'>' |
强制字段在可用空间内右对齐(这是数字的默认值)。 |
'=' |
强制将填充放置在符号(如果有)之后但在数字之前。这用于以“+000000120”形式打印字段。此对齐选项仅对数字类型有效。当’0’紧接在字段宽度之前时,它成为默认值。 |
'^' |
强制字段在可用空间内居中。 |
sign
仅对数字类型有效,指定是否显示正/负号。
选项 | 意义 |
---|---|
'+' |
表示标志应该用于正数和负数。 |
'-' |
表示标志应仅用于负数(这是默认行为)。 |
空格 | 表示应在正数上使用前导空格,在负数上使用减号。 |
width
字符串的最小总字段宽度(含任何前缀、分隔符和其他格式化字符)。
grouping_option
选项 | 意义 |
---|---|
',' |
表示使用逗号作为千位分隔符。 |
'_' |
表示对浮点表示类型和整数表示类型 'd' 使用下划线作为千位分隔符,对于整数表示类型 'b' , 'o' , 'x' 和 'X' ,将为每 4 个数位插入一个下划线 |
precision
对于以 'f'
and 'F'
格式化的浮点数值:要在小数点后显示多少个数位
对于以 'g'
或 'G'
格式化的浮点数值:要在小数点前后共显示多少个数位
对于非数字类型:表示最大字段大小
不适用于整数类型。
format 和 precision 一同使用时,format > precision+1 (小数位数+小数点占一位)时 format 才有意义。
type
对于字符串
缺省即为's'
,所以一般不写
对于整数
类型 | 意义 |
---|---|
'b' |
二进制格式。 输出以 2 为基数的数字。 |
'c' |
字符。在打印之前将整数转换为相应的unicode字符。 |
'd' |
十进制整数。 输出以 10 为基数的数字。 |
'o' |
八进制格式。 输出以 8 为基数的数字。 |
'x' |
十六进制格式。 输出以 16 为基数的数字,使用小写字母表示 9 以上的数码。 |
'X' |
十六进制格式。 输出以 16 为基数的数字,使用大写字母表示 9 以上的数码。 |
'n' |
数字。 这与 'd' 相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。 |
None | 和 'd' 相同。(缺省值) |
整数还可以通过下列的浮点表示类型来格式化
对于浮点数和小数值
类型 | 意义 |
---|---|
'e' |
指数表示。 以使用字母 ‘e’ 来标示指数的科学计数法打印数字。 默认的精度为 6 。 |
'E' |
指数表示。 与 'e' 相似,不同之处在于它使用大写字母 ‘E’ 作为分隔字符。 |
'f' |
定点表示。 将数字显示为一个定点数。 默认的精确度为 6 。 |
'F' |
定点表示。 与 'f' 相似,但会将 nan 转为 NAN 并将 inf 转为 INF 。 |
'g' |
常规格式。 对于给定的精度 p >= 1 ,这会将数值舍入到 p 位有效数字,再将结果以定点格式或科学计数法进行格式化,具体取决于其值的大小。准确的规则如下:假设使用表示类型 'e' 和精度 p-1 进行格式化的结果具有指数值 exp 。 那么如果 m <= exp < p ,其中 m 以 -4 表示浮点值而以 -6 表示 Decimal 值,该数字将使用类型 'f' 和精度 p-1-exp 进行格式化。 否则的话,该数字将使用表示类型 'e' 和精度 p-1 进行格式化。 在两种情况下,都会从有效数字中移除无意义的末尾零,如果小数点之后没有余下数字则小数点也会被移除,除非使用了 '#' 选项。正负无穷,正负零和 nan 会分别被格式化为 inf , -inf , 0 , -0 和 nan ,无论精度如何设定。精度 0 会被视为等同于精度 1 。 默认精度为 6 。 |
'G' |
常规格式。 类似于 'g' ,不同之处在于当数值非常大时会切换为 'E' 。 无穷与 NaN 也会表示为大写形式。 |
'n' |
数字。 这与 'g' 相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。 |
'%' |
百分比。 将数字乘以 100 并显示为定点 ('f' ) 格式,后面带一个百分号。 |
None | 类似于 'g' ,不同之处在于当使用定点表示法时,小数点后将至少显示一位。 默认精度与表示给定值所需的精度一样。 整体效果为与其他格式修饰符所调整的 str() 输出保持一致。(缺省值) |