0

我尝试以下代码:

print(repr("%0.2f" % cost).rjust(24), repr("%0.2f" % provision).rjust(17), end="\n")

但我得到的结果字符串是(当成本 = 100.00 且配置 = 4.00 时)

            '100.00'            '4.00'

所以r.just工作得很好(在这里查找)但出于某种奇怪的原因,这些撇号出现在值周围。

这不会发生在我的下一行代码中:

print("Provision summ %0.2f euros." % summ)

这给了我

Provision summ 4 euros.

如您所见,没有撇号,这是为什么呢?你能告诉我如何删除它们吗?我曾尝试添加.remove("'", "")到我的字符串,但它没有帮助。

4

3 回答 3

3

不要repr()在这里使用;它引入了引号,因为您要求字符串的 Python 文字形式。这end='\n'也是完全多余的,因为这是默认设置。将括号中的格式字符串分组可以满足您的要求:

print(("%0.2f" % cost).rjust(24), ("%0.2f" % provision).rjust(17))

或在插值之前证明:

print("%0.2f".rjust(24) % cost, "%0.2f".rjust(17) % provision)

您可能会更好地学习str.format()并使用它来格式化和证明您的文本:

print("{:>24.2f}{:>18.2f}".format(cost, provision))

这里24>24>1818 个字符宽的字段中的值右对齐(后者是 17 +print()打印多个参数时添加的额外空格):

>>> cost, provision = 100.0, 4.0
>>> print("{:>24.2f}{:>18.2f}".format(cost, provision))
                  100.00              4.00
于 2013-10-21T11:49:59.550 回答
1

不过,这就是这样repr做的:显示实际对象的表示。在这种情况下,对象是由"%0.2f" % cost等组成的字符串。

我完全不知道您为什么要repr在此处使用,尤其是当您在下一个正确的行中不这样做时。它应该只是:

print(("%0.2f" % cost).rjust(24) ... )
于 2013-10-21T11:50:05.630 回答
1

为什么要使用双重格式(即%0.2f先使用,然后再使用rjust)?您可以一步完成,这就是它的目的:

print('%24.2%17.2f' % (cost, provision))

这可能就是你想要的。

于 2013-10-21T12:02:55.067 回答