You need to enable JavaScript to run this app. 如何使用Python f-string实现表格列对齐与小数、百分比格式化
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python f-string实现表格列对齐与小数、百分比格式化

问题根源

  • 列宽参数不匹配造成错位:表头中终值列设置为12字符的右对齐宽度,但循环内打印终值的格式串错误使用了10字符宽度,两者差2个单位,导致数据行的终值会整体左移2个位置,和表头文本无法对齐。
  • 数字格式不匹配需求:市场收益率为0-1之间的小数值,原代码直接按小数格式打印,无法直接展示为需要的百分比形式,手动转换容易引入计算错误。

格式说明符使用规则

f-string 中数值格式化的通用结构为:
{变量: 对齐方向 总宽度 .小数精度 格式类型}

  • 对齐方向:< 左对齐、> 右对齐、^ 居中对齐
  • 格式类型:f 固定小数、% 自动百分比转换(自动将小数乘以100并拼接%符号)

修正后可正常对齐的代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
investment = 10000
expected_returns = 0.06
volatility = 0.14
duration = 20
sip = 10000

# 表头:和数据行保持完全一致的列宽设置
# Date列:左对齐,5字符宽度
# Return列:右对齐,10字符宽度
# Value列:右对齐,12字符宽度,匹配总宽度设定
print(f'{"Date":<5}{"Return":>10}{"Value":>12}')

for date in range(duration):
    market_return = np.random.normal(expected_returns, volatility)
    final_value = sip + (1+ market_return)* investment
    # 修正1:终值打印宽度从10调整为12,和表头列宽完全匹配
    # 修正2:市场收益率使用%格式符,自动转换为带%的百分比形式,保留1位小数
    print(f'{date:<5.0f}{market_return:>10.1%}{final_value:>12.0f}')
    investment = final_value

运行效果说明

  • 三列总宽度固定为5+10+12=27字符,无需插入制表符即可保持整齐对齐
  • 日期列采用左对齐,占满5字符宽度;收益率、终值列采用右对齐,数字的个位、小数点位置完全对齐
  • 市场收益率自动转换为百分比格式(例如随机生成的0.062会直接打印为6.2%),终值默认显示为整数形式
  • 可根据需求灵活调整数字精度:
    • 若需要收益率保留2位小数,将格式符从10.1%改为10.2%即可
    • 若需要终值显示2位小数,将格式符从12.0f改为12.2f即可,无需调整列宽就能保持对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 17:54:06