python - 如何使用制表 python 包在终端中显示漂亮的表格?
问题描述
我有一个用 argparse 模块用 python 编写的简单 CLI 应用程序。基本上我正在使用外部 api 获取一些加密货币数据,我将其转换为 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
您将看到终端中的混乱,如代码片段上方的屏幕截图所示。
解决方案
我遇到了类似的问题:如何最好地在终端中打印表格?有很多不同的方法(当然,你总是可以只使用 PrettyPrinter)。我发现如果我使用 pandas DataFrame 并结合rich- dataframe模块,我可以在终端中生成一个看起来不错的表格。所以代码可能如下所示:
假设您从一个列表开始。将列表转换为字典。然后将字典传递给数据框。最后,在最后调用 print 语句。它在终端中运行良好。
编辑:在您的 MWE 中,您可能需要将 JSON 对象转换为 Python 字典。使用import json
,然后json.loads(dict)
查看示例
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)
推荐阅读
- python - 如何在 Kivy 的 .kv 文件中使用 for 循环创建标签?
- redux - 什么是 redux-loop 以及我们如何在 react native 中使用它
- c++ - 如何使用 cpp 查找我的本地系统日期格式?
- jsf - p:dataTable 中未正确返回所选行
- python - 如何循环函数并存储循环的输出值
- pyspark - Pyspark:使用子字符串和频率向量创建字符串
- c# - 如何在 SendContext 过滤器上检索 MassTransit 中的当前 IServiceProvider 范围 (MS DI)
- python - 如何使用带有 json(或 yaml)文件的 matplotlib 制作图形?
- jquery - 从 jquery 获取数据在控制器中创建的项目
- matomo - Matomo 不再跟踪动作