查看原文
其他

​tabulate:好看的字符串表格库

大邓 大邓和他的Python 2022-07-09

写公众号文章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

  • ...

安装

  1. !pip3 install tabulate

qucik start

这里我自定义了一个函数 println(data,**kw)

  • data 传入的数据

  • 关键词参数。关键词可以是headers、showindex、tablefmt、colalign, numalign, stralign, floatfmt

这样后面我只需要调用 println(data,**kw)即可

  1. from tabulate import tabulate


  2. def println(data,**kw):

  3. print(tabulate(data, **kw))




  4. table = [["Sun",696000,1989100000],

  5. ["Earth",6371,5973.6],

  6. ["Moon",1737,73.5],

  7. ["Mars",3390,641.85]]


  8. println(table, colalign=['left', 'left', 'left'])

Run

  1. ----- ------ ----------

  2. Sun 696000 1.9891e+09

  3. Earth 6371 5973.6

  4. Moon 1737 73.5

  5. Mars 3390 641.85

  6. ----- ------ ----------

headers

显示字段名

  • 传入字段名列表

  • 或者“firstrow”

  1. println(table, headers=['Planet', 'R(kw)', 'mass(x 10^29 kg)'])

Run

  1. Planet R(kw) mass(x 10^29 kg)

  2. -------- ------- ------------------

  3. Sun 696000 1.9891e+09

  4. Earth 6371 5973.6

  5. Moon 1737 73.5

  6. Mars 3390 641.85

headers也可以传入"firstrow"

  1. table = [["Name","Age"],["Alice",24],["Bob",19]]


  2. println(table, headers="firstrow")

Run

  1. Name Age

  2. ------ -----

  3. Alice 24

  4. Bob 19

showindex

显示行索引值,传入True或False

或者

行索引值列表

  1. println([["F",24],["M",19]], showindex=False)

Run

  1. - --

  2. F 24

  3. M 19

  4. - --

显示行索引

  1. println([["F",24],["M",19]], showindex=True)

Run

  1. - - --

  2. 0 F 24

  3. 1 M 19

  4. - - --

自定义行索引 ['第一', '第二']

  1. println([["F",24],["M",19]], showindex=['第一', '第二'])

Run

  1. ---- - --

  2. 第一 F 24

  3. 第二 M 19

  4. ---- - --

tablefmt

设定表格样式,支持

  • "plain"

  • "simple"

  • "github"

  • "grid"

  • "fancy_grid"

  • "pipe"

  • "orgtbl"

  • "jira"

  • "presto"

  • "psql"

  • "rst"

  • "mediawiki"

  • "moinmoin"

  • "youtrack"

  • "html"

  • "latex"

  • "latex_raw"

  • "latex_booktabs"

  • "textile"

大家都试一下tablefmt的参数,选择自己喜欢的格式

  1. table = [["spam",42],["eggs",451],["bacon",0]]

  2. headers = ["item", "qty"]


  3. #字段名, 表格样式位plain

  4. println(table, headers=headers, tablefmt="plain")

Run

  1. item qty

  2. spam 42

  3. eggs 451

  4. bacon 0

字段名, 表格样式位github

  1. println(table, headers=headers, tablefmt="github")

Run

  1. | item | qty |

  2. |--------|-------|

  3. | spam | 42 |

  4. | eggs | 451 |

  5. | bacon | 0 |

字段名, 表格样式位psql

  1. println(table, headers=headers, tablefmt="psql")

Run

  1. +--------+-------+

  2. | item | qty |

  3. |--------+-------|

  4. | spam | 42 |

  5. | eggs | 451 |

  6. | bacon | 0 |

  7. +--------+-------+

对齐方式

设定对齐方式的参数有

  • colalign

  • numalign

  • stralign

  • floatfmt

前三个的参数都可以用center、left、right、decimal设置。

floatfmt需要用特殊的方法, 例如 ".5f"小数点后五位

  1. table = [[1.2345],[123.45],[12.345],[12345],[1234.5]]


  2. println(table)

Run

  1. ----------

  2. 1.2345

  3. 123.45

  4. 12.345

  5. 12345

  6. 1234.5

  7. ----------

左对齐

  1. println(table, numalign='left')

  1. ------

  2. 1.2345

  3. 123.45

  4. 12.345

  5. 12345

  6. 1234.5

  7. ------

左对齐, 小数点后三位

  1. println(table, numalign='left', floatfmt='.3f')

Run

  1. ---------

  2. 1.234

  3. 123.450

  4. 12.345

  5. 12345.000

  6. 1234.500

  7. ---------


近期文章

pip安装问题解决办法

Prophet: 时间序列预测库

计算社会经济学

免费视频课《Python快速入门》

初学Python常见异常错误

Python 函数式编程指北,不只是面向对象哦

一行pandas代码生成哑变量

顺利开班 | python爬虫分析2019年杭州国庆工作坊顺利开班

圆满落幕 | Python 爬虫分析杭州国庆工作坊圆满落幕

文本数据分析文章汇总(2016-至今)


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

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存