gpt4 book ai didi

python - 打印带后缀文本的左对齐格式化 float

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:12 25 4
gpt4 key购买 nike

我想轻松地格式化和左对齐一个由float plus string组成的数量(在我的例子中,字符串是一个度量单位),使用标准的 format_spec 语法。

使用下划线表示消耗的空间:

>>> print '{:<20.2f} {:s}'.format(1.0, 'kg/hr')
1.00_________________kg/hr

但我真正想要的是一种方便的生成方式:

1.00_kg/hr________________

此外,我希望总宽度为 width format_spec 的组成部分,在本例中为 20(但我想要一个通用的解决方案)。在我上面的错误示例中,结果的最终宽度实际上是 26,因为 20 完全保留给了 float 。

我已经搜索过 Google 和 SO,但没有找到任何东西。我的后备方案是编写一个 hacky format_spec 解析器来过滤掉浮点格式部分,应用它使浮点成为一个字符串,然后重建一个新的 format_spec,我将其应用于两者的连接。我正在重写 __format__()在类里面,所以我在 '{:<20.2f}'.format(my_obj) 时收到 format_spec被调用( my_obj 内部包含度量单位,必须在调用 __repr__() 时显示)。拟议的伪代码:

def __format__(self, format_spec):

float_spec = extract_float_part(format_spec)
# Using the example above, float_spec becomes '.2f'

float_str = string.format(float_value, float_spec)
# Using example, float_str becomes '1.00'

new_format_spec = make_new_format_spec(format_spec)
# Using example, new_format_spec should become '<20s'

output = string.format(' '.join([float_str, unit_str]), new_format_spec)

我真的不想写(也不必维护)extract_float_part()make_new_format_spec() .对于部分案例(例如检测和拆分等)来说很容易做到,但我担心会有很多角落案例,我将不得不添加很多样板来处理他们。通常,format_spec 可以是标准格式函数中允许的任何值,触发的任何标准错误都应该传播并正确报告浮点部分。

有没有更聪明的方法?

最佳答案

我可能误会你了,但这就是你想要的吗?

>>> print '{:.2f} {:<20}'.format(1.0, 'kg/hr')
1.00_kg/hr_______________

关于python - 打印带后缀文本的左对齐格式化 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18285765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com