将符号放在padding中以用于转换说明符

时间:2016-10-31 23:15:47

标签: python

print("%-10s %-15s $%8.2f %8.2f %10.2f" % (first_name[i], last_name[i],
                pay_rate[i], hours[i], calculate_pay(hours[i], pay_rate[i])))

如果已经回答,请保持温和。我找不到它,也不熟悉Python和编程。

我想在数字(浮点数)旁边找一个美元符号。这是在填充内部而不是在'$'和数字之间留出空格。

期望的输出:

Please enter your first name(leave blank to quit): daniel
Please enter your last name: johnson
Please enter your hourly pay: 15
Please enter your hours: 40
Please enter your first name(leave blank to quit): 
John       Smith              $10.00    40.00     $400.00
Daniel     Johnson            $15.00    40.00     $600.00

2 个答案:

答案 0 :(得分:2)

我只是做一个帮手功能。建议使用format,而不是使用%格式化旧格式:

def my_format(fn, ln, pr, h, cp):
    return "{:10s} {:>10s} {:>8s} {:8>.2f} {:<8s}".format(
        fn, ln, '$'+'{:0.2f}'.format(pr), h, '$'+'{:0.2f}'.format(cp))


print(my_format('John', 'Smith', 10, 40, 400.00))
print(my_format('Daniel', 'Johnson', 15, 50, 60))

结果:

John            Smith   $10.00 40.00 $400.00 
Daniel        Johnson   $15.00 50.00 $60.00

您可以根据需要调整格式编号并自行格式化。

答案 1 :(得分:0)

你有那个空间,因为花车是右对齐的。您可以在宽度说明符之前添加前导-,以使浮动对齐,这样它们就会位于$符号旁边,没有任何空格:

>>> '$%8.2f' % 4.0
'$    4.00'
>>> # left align to remove space
>>> '$%-8.2f' % 4.0
'$4.00    '

使用新式格式:

>>> '${:<8.2f}'.format(4.0)
'$4.00    '