Python f-string如何实现可变宽度的左对齐格式化输出
实现字典键名动态对齐格式化打印
Python 的 f-string 原生支持动态传入宽度参数,不需要硬编码固定长度,按以下步骤实现即可:
- 第一步:计算对齐基准宽度
遍历待打印字典的所有键,统一转成字符串后取最大长度,作为对齐的基准宽度。如果需要给键名和后面的冒号留空隙,可以在最大值基础上加固定偏移量:# 示例字典 log_dict = { "key": "value", "key1": "value", "key63535": "value" } # 计算最长键名长度,+4 是给键名和冒号之间留足够空格匹配预期对齐效果 align_width = max(len(str(k)) for k in log_dict.keys()) + 4 - 第二步:在f-string中嵌套传入宽度变量
你之前直接替换固定值20不生效,是因为格式规范部分的动态参数必须用嵌套大括号包裹,直接写变量名会被当成格式标识的一部分解析触发报错。左对齐标识<保持不变,把宽度变量放在嵌套的大括号里即可:for k, v in log_dict.items(): print(f"{str(k):<{align_width}}: {v}")
运行后输出完全符合预期的对齐效果:
key : value key1 : value key63535 : value
如果不习惯f-string嵌套写法,也可以用字符串自带的ljust()方法实现相同效果,逻辑完全一致:
for k, v in log_dict.items(): print(f"{str(k).ljust(align_width)}: {v}")
内容的提问来源于stack exchange,提问作者Pioneer_11
相关产品推荐
相关产品推荐

