python - 如何从字典中打印出格式良好的表格
问题描述
为了练习如何更舒适和流利地使用字典,我编写了一个小程序,它读取文件的内容并将其作为键:值对添加到字典中。这没问题,但是当我对如何使用 for 循环以与数据文件中的表格相同的格式再次打印内容感到好奇时,我遇到了麻烦。
我的问题是:如何使用 for 循环将字典的内容打印到终端上?
数据文件是:
Name Age School
Anne 10 Eiksmarka
Tom 15 Marienlyst
Vidar 18 Persbråten
Ayla 18 Kongshavn
Johanne 17 Wang
Silje 16 Eikeli
Per 19 UiO
Ali 25 NTNU
我的代码是:
infile = open("table.dat", "r")
data = {}
headers = infile.readline().split()
for i in range(len(headers)):
data[headers[i]] = []
for line in infile:
words = line.split()
for i in range(len(headers)):
data[headers[i]].append(words[i])
infile.close()
我希望将数据打印回终端。理想情况下,输出应该是这样的
Name Age School
Anne 10 Eiksmarka
Tom 15 Marienlyst
Vidar 18 Persbråten
Ayla 18 Kongshavn
Johanne 17 Wang
Silje 16 Eikeli
Per 19 UiO
Ali 25 NTNU
如果有人可以帮助我,我将不胜感激。
解决方案
最简单的解决方案是使用诸如 之类的库Tabulate
,您可以在此处找到输出示例(您可以进一步自定义)
>>> from tabulate import tabulate
>>> table = [["Sun",696000,1989100000],["Earth",6371,5973.6],
... ["Moon",1737,73.5],["Mars",3390,641.85]]
>>> print(tabulate(table))
----- ------ -------------
Sun 696000 1.9891e+09
Earth 6371 5973.6
Moon 1737 73.5
Mars 3390 641.85
----- ------ -------------
否则,如果您必须使用自己的自定义 for 循环,您可以添加选项卡来修复它的外观,如下所示:
print(a+"\t")
其中 \t 是水平制表转义字符
编辑:如何使用它的示例如下:
infile = open("table.dat", "r")
data = {}
headers = infile.readline().split()
for i in range(len(headers)):
data[headers[i]] = []
for line in infile:
words = line.split()
for i in range(len(headers)):
data[headers[i]].append(words[i])
print(words[i],end= '\t')
print()
infile.close()
注意事项:
1- 对于每个字段,我们使用 print(...,end= '\t'),这会导致输出成为制表符而不是新行,我们也可以考虑添加更多制表符(例如end='\t\t'
)或空格,或者任何其他格式,例如分隔符(例如 `end='\t|\t')
2- 在每一行之后,我们使用 print(),这只会打印一个新行,向下移动打印光标。
推荐阅读
- spring-boot - 未给出初始偏移量时,Spring Boot kafka 侦听器未读取消息
- json - 是否有 Google Sheets 或 MS Excel 公式将带有 JSON 数组的列转换为多行
- python - 如何以与加密货币交易所相同的方式在 python 中计算 RSI14?
- vlc - 使用 vlc 的动态视频流
- mobile - 如何根据手机号码跟踪位置/状态?
- shopify-app - 通过公共应用程序附加 Collections.Liquid 文件
- java - 如何修复 JAXB 上下文的 newInstance 中的 nullPointerException
- git - git subtree 和只是在子目录中克隆 git 有什么区别?
- android-studio - 如何在textview下面画一条线
- outlook-redemption - 手动制作.Pst文件时的大小问题