帮助漂亮地打印具有类似atree结构的ascii表

treetable的Python项目详细描述


三表

帮助漂亮地打印具有树状结构的ascii表。

安装和要求

treetable至少需要python3.6。

pip3 install treetable

快速示例

treetable允许轻松输出复杂的ascii表,如

         ||                 ||              metrics
         ||       info      ||      train     |       test
name     ||  index  status  ||     Pr  recall |   auc  accuracy
RirpUoE  ||  21     L       ||  94.4%   56.4% | 46.3%     79.6%
wtAYHBf  ||                 ||
j        ||                 ||
rLsITTK  ||  47     q       ||  66.0%   84.8% | 46.5%     64.9%
S        ||                 ||
Uumlvod  ||  49     Z       ||  63.1%   99.8% | 94.6%     10.6%
SmIsO    ||                 ||
rzXlDqM  ||  32     J       ||  48.8%   33.5% | 30.8%     94.2%
PyCX     ||                 ||

用法和示例

主要功能是treetable.treetable。它有树状结构 代表桌子。例如,我可以有一个子表info,并且 子表metrics,每个子表递归地由其他子表组成。

每个额外级别的子表使用不同的分隔符(默认情况下最多3个 级别,但您可以使用separators参数提供额外的分隔符。

在树的叶级,一个格式字符串(可以传递给 format内置)可以指定。让我们举个例子

fromtreetableimporttable,group,leafmytable=table([group('info',[leaf('name'),leaf('index')]),group('metrics',align='>',groups=[leaf('speed','.0f'),leaf('accuracy','.1%'),leaf('special','.1%',align='=')]),])

应在嵌套列表之后提供表的行 具有相同形状的词典,例如:

lines=[{'info':{'name':'bob','index':4},'metrics':{'speed':200,'accuracy':0.21,'special':0.1}},{'info':{'name':'alice','index':2},'metrics':{'speed':67,'accuracy':0.45,'special':4.56}},]

现在运行print(treetable(lines, groups))将为您提供

    info     |         metrics
name   index | speed  accuracy  special
bob    4     |   200     21.0%   10.0%
alice  2     |    67     45.0%   456.0%

tablegroupleaf都是节点定义函数。他们都是 接受相同的参数,并且只在位置参数的顺序上有所不同。 在叶节点中定义时,参数将直接影响 如何呈现数据。在组节点或根(aka table)节点中, 它们将覆盖子叶中的默认行为。以下 参数已定义:

  • key:数据结构中的访问键。
  • groups(仅适用于grouptable节点):子表列表。
  • display:与要访问的名称不同时使用的显示名称 lines结构中的值。
  • align:文本对齐,'<;'(左对齐)、'='(居中)或 “>;”(右对齐)。
  • wrap:将文本包装到一定数量的字符之外。没有漂亮的包装, 这将通过插入新行在限制字符处完全换行。
  • missing:特定键不存在时使用的值。违约 是''
  • shorten:自动缩短列名。它们没有缩短 大于基础列的宽度和足够长的前缀 保留以消除与同一列中的其他列之间的任何可能的歧义 子标签。

例如,将shorten=True与上表一起使用时:

  info   |       metrics
name   i | spee  accur  specia
bob    4 |  200  21.0%  10.0%
alice  2 |   67  45.0%  456.0%

name没有缩短,因为alicename长,所以 不要缩短它。但是speed保持的时间足够长 避免与special产生歧义。

当为name列设置wrap=3时,我们获得以下结果:

 info  |       metrics
nam  i | spee  accur  specia
bob  4 |  200  21.0%  10.0%
ali  2 |   67  45.0%  456.0%
ce     |

可以通过传递 separatorstreetable函数。其默认值为 [' ', ' | ', ' || ']

许可证

treetable是在无许可证许可下分发的。 有关详细信息,请参阅许可证文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库