​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	
---------

近期文章

课件获取方式,请在公众号后台回复关键词“20191014”,客官如果觉得有收获,顺便那啥一下哈

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值