tabulate:好看的字符串表格库
写公众号文章dataframe运行的结果直接复制粘贴到公众号格式会乱,今天看到一个tabulate库可以解决这个问题。
tabulate参数
tabulate(data, headers, showindex, tablefmt, colalign, numalign, stralign, floatfmt)
data 传入的数据
headers 字段名,参数可以是firstrow,也可以是指定的列名列表
showindex 显示行索引。布尔值,或者 行索引列表
tablefmt 表格样式,常见的有github、plain、psql等
colalign、numalign、stralign 对齐方式,可以传入列表或者字符串,参数有right、center、left
floatfmt 浮点型对齐方式,可以传入列表或者字符串。例如 “.4f”小数点后4位
tabulate支持传入的数据为
列表的列表
字典列表(关键词作为列名)
二维numpy数组
pandas.DataFrame
...
安装
!pip3 install tabulate
qucik start
这里我自定义了一个函数 println(data,**kw)
data 传入的数据
关键词参数。关键词可以是headers、showindex、tablefmt、colalign, numalign, stralign, floatfmt
这样后面我只需要调用 println(data,**kw)
即可
from tabulate import tabulate
def println(data,**kw):
print(tabulate(data, **kw))
table = [["Sun",696000,1989100000],
["Earth",6371,5973.6],
["Moon",1737,73.5],
["Mars",3390,641.85]]
println(table, colalign=['left', 'left', 'left'])
Run
----- ------ ----------
Sun 696000 1.9891e+09
Earth 6371 5973.6
Moon 1737 73.5
Mars 3390 641.85
----- ------ ----------
headers
显示字段名
传入字段名列表
或者“firstrow”
println(table, headers=['Planet', 'R(kw)', 'mass(x 10^29 kg)'])
Run
Planet R(kw) mass(x 10^29 kg)
-------- ------- ------------------
Sun 696000 1.9891e+09
Earth 6371 5973.6
Moon 1737 73.5
Mars 3390 641.85
headers也可以传入"firstrow"
table = [["Name","Age"],["Alice",24],["Bob",19]]
println(table, headers="firstrow")
Run
Name Age
------ -----
Alice 24
Bob 19
showindex
显示行索引值,传入True或False
或者
行索引值列表
println([["F",24],["M",19]], showindex=False)
Run
- --
F 24
M 19
- --
显示行索引
println([["F",24],["M",19]], showindex=True)
Run
- - --
0 F 24
1 M 19
- - --
自定义行索引 ['第一', '第二']
println([["F",24],["M",19]], showindex=['第一', '第二'])
Run
---- - --
第一 F 24
第二 M 19
---- - --
tablefmt
设定表格样式,支持
"plain"
"simple"
"github"
"grid"
"fancy_grid"
"pipe"
"orgtbl"
"jira"
"presto"
"psql"
"rst"
"mediawiki"
"moinmoin"
"youtrack"
"html"
"latex"
"latex_raw"
"latex_booktabs"
"textile"
大家都试一下tablefmt的参数,选择自己喜欢的格式
table = [["spam",42],["eggs",451],["bacon",0]]
headers = ["item", "qty"]
#字段名, 表格样式位plain
println(table, headers=headers, tablefmt="plain")
Run
item qty
spam 42
eggs 451
bacon 0
字段名, 表格样式位github
println(table, headers=headers, tablefmt="github")
Run
| item | qty |
|--------|-------|
| spam | 42 |
| eggs | 451 |
| bacon | 0 |
字段名, 表格样式位psql
println(table, headers=headers, tablefmt="psql")
Run
+--------+-------+
| item | qty |
|--------+-------|
| spam | 42 |
| eggs | 451 |
| bacon | 0 |
+--------+-------+
对齐方式
设定对齐方式的参数有
colalign
numalign
stralign
floatfmt
前三个的参数都可以用center、left、right、decimal设置。
floatfmt需要用特殊的方法, 例如 ".5f"小数点后五位
table = [[1.2345],[123.45],[12.345],[12345],[1234.5]]
println(table)
Run
----------
1.2345
123.45
12.345
12345
1234.5
----------
左对齐
println(table, numalign='left')
------
1.2345
123.45
12.345
12345
1234.5
------
左对齐, 小数点后三位
println(table, numalign='left', floatfmt='.3f')
Run
---------
1.234
123.450
12.345
12345.000
1234.500
---------
近期文章
顺利开班 | python爬虫分析2019年杭州国庆工作坊顺利开班
课件获取方式,请在公众号后台回复关键词“20191014”,客官如果觉得有收获,顺便那啥一下哈