我的代码执行此操作:
print(count,"\t",monthlyPayment,"\t",interest,"\t",loanAmount)
如何让它更整洁更清洁我不确定为什么它们不对齐?请指导?希望以表格形式
答案 0 :(得分:3)
使用format()。例如:
print('{:7d} {:10d} {:15.2f} {:15.2f}'.format(count, monthlyPayment, interest, loanAmount))
这里d
代表十进制整数,f
代表浮点数。数字是宽度。例如7d
使得整数为7位整数:
3000
和15.2f
一个浮点数,总宽度为15和2位小数:
1000.00
示例输出:
print('{:7d} {:10d} {:15.2f} {:15.2f}'.format(1, 300, 416.67, 99915.67))
是:
1 300 416.67 99915.67
答案 1 :(得分:1)
按制表符格式化在历史上很棘手。只要您的某个字段变得比标签步长,您的整个格式就会中断。在这种情况下,该字段是标题"payment"
。
您可以计算列宽(以字符为单位)并创建匹配的str.format
格式,而不是使用制表符。我假设你有像
data = [(1, 500, 416.67, 99916.67),
(2, 500, 416.32, 99832.99),
...]
header = [("month", "payment", "interest", "balance")]
正在打印:
for line in header + data:
print("\t".join(line))
相反,您需要额外运行数据。一旦建立列宽,然后一次打印。
colwidths = []
for column in zip(*(header + data)):
colwidths.append(len(str(max, column, key=lambda s: len(str(s)))) + 1)
# the `+ 1` in this case being the column margin
formatting = "".join(r"{{:{}}}".format(width for width in colwidths))
for line in header + data:
print(formatting.format(*line))
或者,您可以让tabulate
为您完成工作。这是第三方模块,保存在pypi包管理器here中。用
pip install tabulate
然后使用代码:
import tabulate
data = [(1, 500, 416.67, 99916.67),
(2, 500, 416.32, 99832.99),
...]
header = [("month", "payment", "interest", "balance")]
print(tabulate.tabulate(data, headers=*header))