如何在 fstring 中使用 ljust?

问题描述 投票:0回答:1

要求

  • 我有一些浮点值和字符串,我想在一行中打印出来
  • 我有多行要打印
  • 我希望它的格式像没有线条的表格

问题

  • 浮点值的
    -
    符号会降低外观(值不会对齐)
  • 我可以
    f"{myfloat:+}"
    给出所有值的符号。但是,那么我就不能使用
    str.ljust
    方法
  • 我尝试了
    f"{str(myfloat:+).ljust(10)}"
    ,这当然引发了错误
# My current code
values = [-1.0, 2.2]

for value in values:
    formatted = str(value).ljust(10)
    print(f"someLjustedStrings{formatted}someLjustedStrings")

#Output
#someLjustedStrings-1.0      someLjustedStrings
#someLjustedStrings2.2       someLjustedStrings

#Expected Output (best)
#someLjustedStrings-1.0      someLjustedStrings
#someLjustedStrings+2.2      someLjustedStrings
#OR
#someLjustedStrings-1.0      someLjustedStrings
#someLjustedStrings 2.2      someLjustedStrings

python string formatting
1个回答
6
投票

更新答案:

您可以组成多个格式说明符。下面,

+.1f
用于保留符号,并且仅打印到小数点后一位。
<10
用于调整字符串。

values = [-1.0, 2.2]

for value in values:
    print(f"someLjustedStrings{value:<+10.1f}someLjustedStrings")

旧答案:

你可以试试这个:

values = [-1.0, 2.2]

for value in values:
    print(f"someLjustedStrings{['+', '-'][value<0]}{abs(value):<10}someLjustedStrings")

输出:

someLjustedStrings-1.0       someLjustedStrings
someLjustedStrings+2.2       someLjustedStrings

<
后跟
int
表示
ljust

>
后跟
int
表示
rjust

编辑:

如果你想通过变量

ljust

LJUST = {'value': 10}
values = [-1.0, 2.2]

for value in values:
    print(f"someLjustedStrings{['+', '-'][value<0]}{abs(value):<{LJUST['value']}}someLjustedStrings")

输出:

someLjustedStrings-1.0       someLjustedStrings
someLjustedStrings+2.2       someLjustedStrings
© www.soinside.com 2019 - 2024. All rights reserved.