以下代码:
i1, i2, i3 = 1234, 45, 856
print(f"{i1:<5}{i2:<5}{i3}")
显示:
1234 45 856
这很好,但是我想在屏幕左侧的给定位置显示每个整数。
如果可能的话,我也想继续使用f字符串,而不是C样式格式。
这将使我能够轻松地打印出对齐得很好的东西,例如:
(1234) (45) (856)
(12) (45744) (844456)
当然可以在f字符串中添加这样的括号,但这有点噩梦。 在打印位置的行上提供硬编码位置会容易得多
顺便说一句,使用整数只是一个例子,我希望该解决方案适用于任何类型(浮点型,布尔型,数组...)。
答案 0 :(得分:1)
您可能需要设计自己的格式化工具。假设i3
的字段始于start
。准备前两个字段的字符串,根据需要修剪或扩展它,然后将字符串追加到第三项:
s12 = f"{i1:<5}{i2:<5}"
start = 8
(s12[:start] if start <= len(s) else s + " " * (start - len(s))) + f"{i3}"
#'1234 45 856'
start=12
(s12[:start] if start <= len(s) else s + " " * (start - len(s))) + f"{i3}"
#'1234 45 856'
答案 1 :(得分:1)
不确定为什么需要此功能,但可以尝试以下操作:
>>> i1, i2, i3 = 1234, 45, 856
>>> print(f"{i1:<5}{i2:<5} {i3}") # your example
1234 45 856
>>> print(f"{i1:<5}{i2:<5} \r{i3}") # start from the begging and overwrite
8564 45
>>> print(f"{i3:>50}\r {i1:<5}{i2:<5}")
1234 45 856
第三种情况下,i3
向右移动了50个字符,然后才打印i1
和i2
。但是请注意,以正确的方式打印所有内容会变得有些棘手。
如果要将输出格式设置为列,请查看此Create nice column output in python或某种终端计数器/进度条Text Progress Bar in the Console [closed]
答案 2 :(得分:0)
我最终找到了一种解决方法,其中包括使用封装的f字符串:
i1, i2, i3 = 1234, 45, 856
print(f'{f"({i1})":<10}{f"({i2})":<10}{f"({i3})":<10}')
i1, i2, i3 = 12, 454, 8564
print(f'{f"({i1})":<10}{f"({i2})":<10}{f"({i3})":<10}')
输出:
(1234) (45) (856)
(12) (454) (8564)