我需要将数据作为表写入文本文件。有点像数据库。标题包括车手,汽车,车队,网格,最快圈速,比赛时间和积分。当我尝试写下它下面的数据时,不要排队。有些司机的名字比其他人长。
看起来有点像这样:
| Driver |
|Sebastian William|
|Tom Hamilton |
只有2个名称实际上与标题对齐。我只是试图解决驱动程序的问题,一旦我弄清楚我应该能够得到所有其他标题排队。
在字典数组中使用for循环我将x设置为等于驱动程序名称的len,22是最长名称的长度(18)加上几个空格。
TextFile.write((items['Driver']+'\t|').expandtabs(22-x))
任何使它们排成一列的方式?
答案 0 :(得分:4)
您可以使用format string syntax:
>>> "|{:22}|".format("Niki Lauda")
'|Niki Lauda |'
您还可以更改对齐方式:
>>> "|{:>22}|".format("Niki Lauda")
'| Niki Lauda|'
>>> "|{:^22}|".format("Niki Lauda")
'| Niki Lauda |'
如果您希望更灵活地调整列大小,也可以对其进行参数化:
>>> "|{:^{}}|".format("Niki Lauda", 24)
'| Niki Lauda |'
答案 1 :(得分:2)
除了Tim提供的答案之外,您可以选择使用Tabulate,它非常易于使用和自定义。
table = [["spam",42],["eggs",451],["bacon",0]]
headers = ["item", "qty"]
print tabulate(table, headers, tablefmt="grid")
+--------+-------+
| item | qty |
+========+=======+
| spam | 42 |
+--------+-------+
| eggs | 451 |
+--------+-------+
| bacon | 0 |
+--------+-------+
这也为多种不同的数据库样式提供支持。我更喜欢使用格式,因为它允许我通过配置tablefmt
参数来完全改变输出样式。