围绕我的弦的额外撇号

时间:2013-10-21 11:47:58

标签: python printing

我尝试以下代码:

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("'", "")添加到我的字符串中,但它没有帮助。

3 个答案:

答案 0 :(得分: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>18右对齐字段24和18个字符宽的值(后者是17 +打印多个参数时添加的额外空格print()):

>>> cost, provision = 100.0, 4.0
>>> print("{:>24.2f}{:>18.2f}".format(cost, provision))
                  100.00              4.00

答案 1 :(得分:1)

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

我根本不知道为什么你会在这里使用repr,特别是当你在下一个正确的行中没有这样做时。它应该只是:

print(("%0.2f" % cost).rjust(24) ... )

答案 2 :(得分:1)

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

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

这可能是你想要的。