python字符串format字符串固定长度,python字符串格式化固定宽度

I want to put a bunch of floating point numbers into a fixed-width table. That is, I want a maximum of 12 characters used. I want a minimum of 10 decimals used (if available); however, if 10 decimals makes it take up more than 12 characters, then round. My original thought was to try something like this

# I only want 12 characters used total

num1 = 0.04154721841

num2 = 10.04154721841

# not what I want

print "{:<12.11g}".format((num1))

# what I want

print "{:<12.10f}".format((num1))

# not what I want

print "{:<12.10f}".format((num2))

# what I want

print "{:<12.11g}".format((num2))

There has to be a way to achieve this without writing a function to check every number and give formatting based on the above conditions. What am I missing?

解决方案

I'm not sure this is what you are looking for, since it's not accomplished entirely with the format string, however, you could just use string slicing to lop-off the trailing chars when things get too long:

num1 = 0.04154721841

num2 = 10.04154721841

num3 = 1002.04154721841

print "{0:<12.11g}".format(num1)[:12]

print "{0:<12.11g}".format(num2)[:12]

print "{0:<12.11g}".format(num3)[:12]

outputs:

0.0415472184

10.041547218

1002.0415472

Beyond that, I'd say you should just write a function, though I'm not an expert on the str.format stuff, so I may be missing something.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值