跳转到主要内容

以Markdown格式打印表格数据

项目描述

table2md

以Markdown格式打印表格数据

安装

在3.6+版本的Python上进行了测试。 pip3 install table2md

用法

from table2md import MarkdownTable

# All following examples print the following table onto stdout:
# | constant | value |
# |----------|-------|
# | e        | 2.71  |
# | pi       | 3.14  |
# | sqrt2    | 1.41  |

# With dictionaries
MarkdownTable.from_dicts([
    {"constant": "e", "value": 2.71},
    {"constant": "pi", "value": 3.14},
    {"constant": "sqrt2", "value": 1.41},
]).print()

# With 2D iterables
MarkdownTable.from_2d_iterable([
    ["constant", "value"],
    ["pi", 6.28],
    ["e", 2.71],
    ["sqrt2", 1.41],
]).print()

# With named tuples
from typing import NamedTuple

class Constant(NamedTuple):
    constant: str
    value: float

MarkdownTable.from_namedtuples([
    Constant("e", 2.71),
    Constant("pi", 3.14),
    Constant("sqrt2", 1.41),
]).print()

MarkdownTable自动将所有值合并为字符串(使用str(value));除了MarkdownTable.from_dicts,其中键假定是字符串。

要使用自定义格式,可以自行将值合并为字符串,使用具有自定义__str__方法的自己类,或者使用特殊的MarkdownTable.from_serializable构造函数。

它需要一个具有_fields属性和serialize方法的对象的可迭代集合。示例

from table2md import MarkdownTable
from typing import NamedTuple
from datetime import datetime

# Named tuples already provide the _fields property,
# so we only need to implement the serialize method.
class TemperatureReadout(NamedTuple):
    tstamp: datetime
    value: float

    def serialize(self) -> tuple[str, str]:
        return self.tstamp.strftime("%Y-%m-%d %H:%M"), f"{self.value:.1f}"

MarkdownTable.from_serializable([
    TemperatureReadout(datetime(2021, 11, 1, 10, 0, 0), 10.411),
    TemperatureReadout(datetime(2021, 11, 1, 12, 0, 0), 12.782),
    TemperatureReadout(datetime(2021, 11, 1, 14, 0, 0), 11.214),
]).print()
# Output:
# |      tstamp      | value |
# |------------------|-------|
# | 2021-11-01 10:00 | 10.4  |
# | 2021-11-01 12:00 | 12.8  |
# | 2021-11-01 14:00 | 11.2  |

文档

MarkdownTable

一个表示表格数据的类

  • MarkdownTable(data: List[List[Str]]):
    从字符串的二维列表初始化表格。第一行始终是标题行。请参阅实用MarkdownTable.from_*辅助类方法。提供的列表不会被复制!

  • markdown_table.__str__() -> str:
    将包含的表格数据序列化为Markdown表格。假定第一行是标题行。

  • markdown_table.validate() -> None:
    确保包含的表格可以打印 - 即它有一个标题;并且所有包含数据的行与标题行具有相同数量的单元格。
    如果检测到无效状态,则引发InvalidData的子类。

  • markdown_table.print(end: str = "", file: SupportsWrite[str] = sys.stdout, flush: bool = False) -> None:
    验证表格,然后打印它。'end'、'file'和'flush'参数会传递给内置的print函数。
    请注意,序列化的表格已经在末尾有换行符,因此不需要end="\n"

  • markdown_table.display() -> None:
    验证表格,然后尝试使用IPython.display.display_markdown进行美化打印。

    如果不可用,则与 table.print() 相同。

  • MarkdownTable.from_2d_iterable(iters: Iterable[Iterable[Any]]) -> MarkdownTable:
    从二维可迭代对象初始化表格。每个单元格通过调用 str(cell) 保存。如果提供二维列表,则复制这些列表(这与构造函数的行为不同)。

  • MarkdownTable.from_dicts(dicts: Iterable[Mapping[str, Any]]) -> MarkdownTable:
    从字典的可迭代对象初始化表格。每个值通过调用 str(cell) 保存。
    只使用第一个字典中的键;也就是说,其他字典中的任何额外键都将被忽略。然而,如果后续的字典中缺少键,将抛出 KeyError。

  • MarkdownTable.from_namedtuples(named_tuples: Iterable[_NamedTupleLike]) -> MarkdownTable:
    从命名元组的可迭代对象初始化表格。
    实际上,这些不必是命名元组;只要对象具有 _fields 属性,并且可以迭代这些对象,此函数就可以正常工作。
    第一个对象的 _fields 属性是标题行。
    如果对象类型不同,请确保它们具有相同数量的字段;否则将创建无效的表格。

  • MarkdownTable.from_serializable(objects: Iterable[_Serializable]) -> MarkdownTable:
    这是 from_namedtuples 的扩展;但是,不是直接迭代这些对象,而是使用 obj.serialize() 获取单元格的字符串表示。
    因此,只要对象具有 _fields 属性和 serialize() 方法;此方法就可以正常工作。
    第一个对象的 _fields 属性是标题行。
    确保所有对象的 serialize() 方法产生相同数量的单元格,否则将创建无效的表格。

异常

  • InvalidData:用于表格验证的基本异常。子类 ValueError

  • NoData:当表格完全没有数据时(甚至没有标题行)使用的异常。子类 InvalidData

  • MisalignedRows:当表格具有比标题多或少单元格的行时使用的异常。子类 InvalidData

协议/接口

  • SupportsWrite[str]:具有接受字符串参数的写入方法的所有内容。由 _typeshed 模块实现。

  • _NamedTupleLike:具有 _fields 属性的所有内容,该属性是代表字段名称的字符串的可迭代对象;即本身是可迭代的。

  • _Serializable:具有 _fields 属性的所有内容,该属性是代表字段名称的字符串的可迭代对象;并且具有 serialize() -> Iterable[str] 方法,该方法返回所有持有的字段值作为字符串。

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定要选择哪一个,请了解更多关于 安装包 的信息。

源分发

table2md-1.1.0.tar.gz (7.1 kB 查看哈希值)

上传时间

构建分发

table2md-1.1.0-py3-none-any.whl (7.1 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面