我正在尝试格式化这一行:
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
当我尝试更大的数字时,他们不会这样做。
答案 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