本文介绍 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() 输出保持一致。(缺省值) |