Python 字符串的格式规格

String Format Spec in Python

本文介绍 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, -0nan,无论精度如何设定。精度 0 会被视为等同于精度 1。 默认精度为 6
'G' 常规格式。 类似于 'g',不同之处在于当数值非常大时会切换为 'E'。 无穷与 NaN 也会表示为大写形式。
'n' 数字。 这与 'g' 相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。
'%' 百分比。 将数字乘以 100 并显示为定点 ('f') 格式,后面带一个百分号。
None 类似于 'g',不同之处在于当使用定点表示法时,小数点后将至少显示一位。 默认精度与表示给定值所需的精度一样。 整体效果为与其他格式修饰符所调整的 str() 输出保持一致。(缺省值)