format()函数需显式指定对齐符和宽度,冒号为格式说明起始标记;填充字符须在对齐符前且为单字符;{:08d}隐含“=”对齐,{:0>8d}中0为填充符但右对齐优先补空格。

format() 函数完全支持复杂对齐和填充,但必须显式指定对齐符和宽度,否则默认左对齐且不补空格。
对齐符号必须紧跟在冒号后面,不能省略冒号
很多人写 {:\ 或 <code>{:>10} 时漏掉冒号,结果格式化失效,变量原样输出。冒号 : 是 format spec 的起始标记,所有对齐、宽度、精度都得从它开始。
{: 左对齐,总宽 10(不足补空格)-
{:>10}右对齐,总宽 10 -
{:^10}居中对齐,总宽 10 -
{:=10}数值专用:符号靠左,数字靠右,如-123→- 123
填充字符必须放在对齐符前面,且只能是单字符
想用 * 或 0 填充?得写成 {:*^12},不是 {:^*12}。顺序固定为:{:fill-align-width}。填充值不能是字符串或变量,硬编码单字符即可。
-
{:0>8}→00012345(数字补零) -
{:#>10}→####hello(字符串补 #) {:a → <code>appleaa(注意:对字符串,a是合法填充符;但0对非数字类型会报ValueError)
数字类型有额外规则:前导零和符号位置会影响填充行为
对整数或浮点数,0 填充和 = 对齐会联动。比如 {:010d} 等价于 {:=010d},都会把符号(如有)放最左,其余补零。但 {:0>10d} 就只右对齐补空格,0 被当填充符而非“零填充标志”——这里容易混淆。
-
{:08d}→00001234(隐含=对齐) -
{:=08d}→ 同上,显式声明更清晰 -
{:0>8d}→1234(0是填充字符,但右对齐优先,所以补的是空格) - 浮点数加精度:
{:010.2f}→0000123.45
嵌套表达式里 format() 容易因括号或引号错位失效
在 f-string 或 str.format() 中混用花括号时,双花括号 {{}} 表示字面量 {,但一旦写成 {:{width}} 这类动态宽度,就必须确保外部大括号成对、内部冒号结构完整。常见错误是漏掉内层右括号或把 width 变量名拼错。
- 动态宽度:
"{: → <code>"text " - 错误写法:
"{: → <code>ValueError: unmatched '{' - f-string 中等效写法:
f"{'text':,注意这里 <code>w是变量,不加引号
对齐和填充真正麻烦的不是语法本身,而是不同数据类型对同一格式符的响应差异——字符串接受任意填充符,数字对 0 有特殊语义,而布尔值会被转成 True/False 再格式化。动手前先用 type() 确认值类型,比反复试错快得多。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











