1.使用tabulate
使用tabulate将前6个英文大写字符与其对应的ASCII码显示出来:
from tabulate import tabulate
import string
s=string.ascii_uppercase
headers = ['alpha', 'digit code']
table = [[i,s[i],ord(s[i])] for i in range(4)]
res=tabulate(table, headers,numalign = "center",stralign= "center",tablefmt='pretty')
print(res)
numalign
和 stralign
用来调节数字/字符在表格中位置"right", "center", "left", "decimal"
。
tablefmt来调整表格的风格,一般直接选tablefmt='pretty'
,应该就可以满足要求了。
其他风格见官方网页(参考文献1)。
效果如下:
+---+-------+------------+
| | alpha | digit code |
+---+-------+------------+
| 0 | A | 65 |
| 1 | B | 66 |
| 2 | C | 67 |
| 3 | D | 68 |
+---+-------+------------+
也可以在参数里多加一个showindex=True
,用来在第一列显示index。
res=tabulate(table, headers,numalign = "center",stralign= "center",tablefmt='pretty',showindex=True)
效果如下:
+---+---+-------+------------+
| | | alpha | digit code |
+---+---+-------+------------+
| 0 | 0 | A | 65 |
| 1 | 1 | B | 66 |
| 2 | 2 | C | 67 |
| 3 | 3 | D | 68 |
+---+---+-------+------------+
2.使用terminaltables
from terminaltables import AsciiTable
import string
s=string.ascii_uppercase
table = [[" ", 'alpha', 'digit code']]
table +=[[i,s[i],ord(s[i])] for i in range(4)]
Tabel=AsciiTable(table)
Tabel.justify_columns[1] = 'center'
print(Tabel.table)
结果为:
+---+-------+------------+
| | alpha | digit code |
+---+-------+------------+
| 0 | A | 65 |
| 1 | B | 66 |
| 2 | C | 67 |
| 3 | D | 68 |
+---+-------+------------+
3.tabulate和AsciiTable的简单比较
二者相比较,前面的编程实现都差不多,均要建立一个二维的列表,把需要显示的数据按行放进去。
扫描二维码关注公众号,回复:
13372006 查看本文章
另外,tabulate把header也作为一个参数。
差别主要在显示方面,如调节居中时,tabulate
按数字/字符进行调整;而AsciiTable是按列。
类似的还有PrettyTable,不再赘述。
参考文献
[1] https://pypi.org/project/tabulate/
[2] https://robpol86.github.io/terminaltables/settings.html