探讨我的格式。(Python)

时间:2016-12-29 18:36:29

标签: python-3.x

我正在尝试格式化这一行:

print("{0:5} {1:5} {2:5} £{3:5} £{4:5}".format(GTIN,product,Quantity,indprice,finprice,))

然而,它给出了一个输出,其中英镑符号与20。:

分开
46389121 chicken 2     £10.00 £   20

我希望每个变量之间有5个空格,如下所示:

46389121     chicken     2     £10.00     £20

有人可以在格式化中发现我的愚蠢错误吗?

编辑:

print("{}   {}   {}   £{}   £{}".format(GTIN,product,Quantity,indprice,finprice))


346389121   chicken   345435435   £10.00   £3454354350
46389121   chicken   2   £10.00   £20
46389121   chicken   2   £10.00   £20
46389121   chicken   23213213   £10.00   £232132130

当我尝试更大的数字时,他们不会这样做。

3 个答案:

答案 0 :(得分:1)

只需将空格放在格式字符串

`{}     {}     {}     £{}     £{}`.format(GTIN,product,Quantity,indprice,finprice)

答案 1 :(得分:1)

首先格式化您的单个字符串,然后str.join格式化它们:

GTIN = 46389121
product = 'chicken'
Quantity = 2
indprice = 10.00
finprice = 20.00

strgs = [str(GTIN), product, str(Quantity), '£{:.2f}'.format(indprice),
         '£{:.2f}'.format(indprice)]
print((5*' ').join(strgs))

通过这种方式,您可以轻松更改各个字符串之间的空格数。

请注意,':5'.format(...)可能会弄乱您所需的格式。 5这里是为您的输入保留的最小空间;如果您的输入较短,您的数据之间会有更多空格。如果它更长,在你的情况下一切都好。

您还可以'构造'格式字符串拳头然后填充它(与Patrick Haugh's answer相同):

fmt = (5*' ').join(('{}', '{}', '{}', '£{:.2f}', '£{:.2f}'))
print(fmt.format(GTIN,product,Quantity,indprice,finprice))

答案 2 :(得分:1)

你应该放一个“<”在空格数之前签名。默认情况下,python使用“>”作为数字的对齐方式,在数字的左侧添加空格或填充符号。符号“<”在数字右侧添加空格,这是您需要的

print("{0:<5} {1:<5} {2:<5} £{3:<5} £{4:<5}".format(1, 2, 3, 5, 20))
>> 1     2     3     £5     £20

print("{0:5} {1:5} {2:5} £{3:5} £{4:5}".format(1, 2, 3, 5, 20))
>>    1     2     3 £    5 £   20