帮助漂亮地打印具有类似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第三方库


热门话题
io如何从java中的远程FileInputStream中知道扩展名为的文件名   java spring引导不会为JSP返回404,除非编译tomcat maven依赖范围?   ArchUnit:如何避免对java类的依赖冲突   java Hibernate很多都不工作   java tomcat基于表单的身份验证数据源配置错误   java将随机对象声明为私有静态最终属性可以吗?   java Sobel筛选器无法正常工作   我想用java为hangman乘以一个字符串   当我试图运行部署在Tomcat中的任何项目时,ubuntu上的java Tomcat服务器将自动关闭   java更高效地读取按字母顺序排序的文本文件   java Android Studio“尚未附加片段”   在JavaServlet中使用从一种形式到另一种形式的数据的html   检测Java中打开的文件夹(JNativeHook)   jakarta ee Hibernate映射异常:实体映射中的重复列   httpSession在Java中使用什么方法进行会话管理   java如何将两个类的代码外包到一个新的类中,以便两个类都可以调用该方法