You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3如何实现左对齐截断描述、右对齐金额的字符串格式化

你缺少两个核心处理逻辑:

  1. 描述字段的超长截断逻辑:当前你没有对description做长度限制,长度超过23的描述会挤占金额列的位置,直接破坏整体布局。Python的字符串格式化支持同时指定对齐宽度和最大显示长度,只需要把description的格式化规则从<23改成<23.23,就能实现左对齐占满23位、超过23位自动截断的效果。
  2. 金额列的宽度适配逻辑:你当前设置的金额宽度为7位,最多只能容纳9999.99这类长度为7的数值,一旦金额超过10000,格式化后的10000.00长度为8,会撑破预设宽度导致小数点错位。你可以根据业务实际的金额范围调整宽度,比如改成8位就能覆盖10万以内的正负金额。

修改后的完整代码如下:

ledger = [
    {'amount': 1000.00, 'description': 'initial deposit'},
    {'amount': -10.15, 'description': 'groceries'},
    {'amount': -15.89, 'description': 'restaurant and more food costings'},
    {'amount': -50, 'description': 'Transfer to Clothing'}
]

# 打印表头
category = "Food"
print(category.center(30, '*'))

string = ''
for dic in ledger:
    # 描述左对齐占23位,超长截断;金额右对齐占7位,保留两位小数
    string += '{description:<23.23}{amount:>7.2f}\n'.format(**dic)

print(string)

运行输出结果完全符合要求:

*************Food*************
initial deposit        1000.00
groceries               -10.15
restaurant and more foo -15.89
Transfer to Clothing    -50.00

如果你的业务中存在超过10000的大额金额,可以把金额的格式化规则改成{amount:>8.2f},同步把描述的最大长度调整为22,保证整行总长度一致即可。

内容的提问来源于stack exchange,提问作者Arafat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:06:04