以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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d288c460220b2e03c9145313ad145bb30e29b26407fae6c511077716b9846d8 |
|
MD5 | ca439a6ae86d348a51998d2021c81d56 |
|
BLAKE2b-256 | d3a6ee9798a71fa41a02ee8013edd52b769c9e02a2eb3a851711e6faff7c5227 |
table2md-1.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e88cf5b171bf5e5ae049a8a13082be49390b52e16ddf4ca21f2b0fe87f40c155 |
|
MD5 | 03b9af18a42251507bef0414a27caf88 |
|
BLAKE2b-256 | bc8afb9dcd434d630dfe6ddc0ce05ef9426b49a5641312cd5af3d381d895fd9b |