用Python标签?

时间:2015-11-26 10:50:48

标签: python

我需要将数据作为表写入文本文件。有点像数据库。标题包括车手,汽车,车队,网格,最快圈速,比赛时间和积分。当我尝试写下它下面的数据时,不要排队。有些司机的名字比其他人长。

看起来有点像这样:

|     Driver      |
|Sebastian William|
|Tom Hamilton  | 

只有2个名称实际上与标题对齐。我只是试图解决驱动程序的问题,一旦我弄清楚我应该能够得到所有其他标题排队。

在字典数组中使用for循环我将x设置为等于驱动程序名称的len,22是最长名称的长度(18)加上几个空格。

TextFile.write((items['Driver']+'\t|').expandtabs(22-x))

任何使它们排成一列的方式?

2 个答案:

答案 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参数来完全改变输出样式。

相关问题