【问题标题】:How to display pretty tables in terminal with tabulate python package?如何使用制表 python 包在终端中显示漂亮的表格?
【发布时间】:2021-08-05 11:10:29
【问题描述】:

我有一个用 argparse 模块用 python 编写的简单 CLI 应用程序。基本上我正在使用外部 api 获取一些加密货币数据,我将其转换为 pandas 数据框并使用制表模块打印它。但是我在终端中打印表格时遇到问题。当我这样做时,一切都出错了,表格没有保持正确的结构,最后看起来就像下面的屏幕一样。

这里是 sn-p,用于使用表格打印 pandas 数据框

# file: example.py
import requests
from tabulate import tabulate


def get_recommendations():
    url = "https://min-api.cryptocompare.com/data/recommended/all"
    req = requests.get(url, params={'fsym' : 'BTC' ,"tsym": 'USD'})
    return pd.DataFrame(req.json()['Data']['exchanges']).T


df = get_recommendations()

print(
    tabulate(
        df,
        headers=df.columns,
        floatfmt=".5f",
        showindex=True,
        tablefmt="psql",
    )
)

如果你在终端运行 python example.py 你会在终端看到一团糟,就像上面代码 sn-p 的截图一样。

我能否解决它,并在我的终端中显示漂亮、格式良好的表格,如下所示?

【问题讨论】:

  • 看起来表格比你的终端宽,你有数据的示例 sn-p 来使它成为minimal reproducible example吗?
  • 试试termtables,这是一个轻量级的 Python 3 包,用于在命令行上漂亮地打印表格
  • @Alex 我添加了完整的示例。希望重新创建它就足够了。
  • @Pluviophile 我会尝试使用这个包,但我认为也许可以为终端添加一些约束以正确显示所有内容,即使表格的大小比终端窗口大。跨度>

标签: python dataframe terminal argparse tabulate


【解决方案1】:

我遇到了类似的问题:如何最好地在终端中打印表格?有很多不同的方法(当然,你总是可以只使用 PrettyPrinter)。我发现如果我使用 pandas DataFrame,结合rich-dataframe 模块,我可以在终端中生成一个看起来不错的表格。所以代码可能是这样的:

假设您从一个列表开始。将列表转换为字典。然后将字典传递给数据框。最后,在最后调用 print 语句。它在终端中运行良好。

编辑:在您的 MWE 中,您可能需要将 JSON 对象转换为 Python 字典。使用import json,然后使用json.loads(dict)examples

from rich_dataframe import prettify
import pandas as pd

languages = ['English', 'Italiano', 'Espanol']

x = dict(enumerate(languages))

df = pd.DataFrame.from_dict(x, orient='index', columns=['Languages Supported'])

table = prettify(df, row_limit=10)

print(table)

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 2018-12-10
    • 2017-10-25
    • 2013-06-14
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2013-04-21
    相关资源
    最近更新 更多