格式

Tablib支持各种不同的表格格式,包括输入和输出。而且,你可以 register your own formats .

命令行接口

这个 cli 格式当前仅导出。导出将生成适合终端的表示表。

导出到CLI时,可以使用 tablefmt 参数,支持的格式为:

>>> import tabulate
>>> list(tabulate._table_formats)
['simple', 'plain', 'grid', 'fancy_grid', 'github', 'pipe', 'orgtbl',
 'jira', 'presto', 'psql', 'rst', 'mediawiki', 'moinmoin', 'youtrack',
 'html', 'latex', 'latex_raw', 'latex_booktabs', 'tsv', 'textile']

例如::

dataset.export("cli", tablefmt="github")
dataset.export("cli", tablefmt="grid")

此格式是可选的,请使用 pip install "tablib[cli]" 使格式可用。

csv

导入CSV数据时,可以指定数据源的第一行是否为带有 headers 布尔参数(默认为 True ):

import tablib

tablib.import_set(your_data_stream, format='csv', headers=False)

还可以提供 skip_lines 参数指定在开始读取数据之前应跳过的行数。

在 3.1.0 版本发生变更: 这个 skip_lines 参数已添加。

使用导出时 csv 格式,则顶行将包含标题(如果已设置)。否则,首行将包含数据集的第一行。

导入CSV数据源或将数据集导出为CSV时,可以传递 csv.reader()csv.writer() 功能。例如::

tablib.import_set(your_data_stream, format='csv', dialect='unix')

dataset.export('csv', delimiter=' ', quotechar='|')

行尾

导出默认情况下使用\r\n行尾,因此,请确保包括 newline='' 否则,在Excel中打开文件时,每行之间将出现一个空行:

with open('output.csv', 'w', newline='') as f:
    f.write(dataset.export('csv'))

如果不这样做,并且在windows上导出文件,则csv文件将在excel中打开,每行之间有一个空行。

dbf公司

使用导入/导出 dBASE 格式。

二进制警告

这个 dbf 格式包含二进制数据,因此请确保以二进制模式写入:

with open('output.dbf', 'wb') as f:
    f.write(dataset.export('dbf')

df(数据帧)

使用导入/导出 pandas 数据帧格式。此格式是可选的,请使用 pip install "tablib[pandas]" 使格式可用。

HTML

导出会生成一个HTML页面,其数据位于 <table> 。如果设置了表头,则它们将用作表头 (thead )。

在导入HTML时,您可以通过提供 table_id 论点::

import tablib

tablib.import_set(your_html, format='html', table_id='some_table_id')

否则,将导入找到的第一个表。

在 3.6.0 版本发生变更: 添加了导入HTML的功能。已放弃对MarkupPy的依赖。

吉拉

这个 jira 格式当前仅导出。导出根据Jira表格语法格式化数据集:

||heading 1||heading 2||heading 3||
|col A1|col A2|col A3|
|col B1|col B2|col B3|

json

使用导入/导出 JSON 格式。如果设置了头,将返回一个JSON对象列表。如果没有设置头,则返回列表(行)的JSON列表。

import假设(目前)头存在。

Latex

使用导入/导出 LaTeX 格式。此格式仅用于导出。如果设置了标题,它将作为表标题导出。

消耗臭氧层

以OpenDocument电子表格格式导出数据。这个 ods 格式当前仅导出。

此格式是可选的,请使用 pip install "tablib[ods]" 使格式可用。

二进制警告

Dataset.ods 包含二进制数据,因此请确保以二进制模式写入:

with open('output.ods', 'wb') as f:
    f.write(data.ods)

RST

将数据导出为 reStructuredText 数据集的表表示。这个 rst 格式仅导出。

如果第一列中的文本从未换行,则导出将返回一个简单表,否则将返回网格表:

>>> from tablib import Dataset
>>> bits = ((0, 0), (1, 0), (0, 1), (1, 1))
>>> data = Dataset()
>>> data.headers = ['A', 'B', 'A and B']
>>> for a, b in bits:
...     data.append([bool(a), bool(b), bool(a * b)])
>>> table = data.export('rst')
>>> table.split('\\n') == [
...     '=====  =====  =====',
...     '  A      B    A and',
...     '                B  ',
...     '=====  =====  =====',
...     'False  False  False',
...     'True   False  False',
...     'False  True   False',
...     'True   True   True ',
...     '=====  =====  =====',
... ]
True

tsv公司

的变体 csv 以表格格式作为字段分隔符。

xls公司

在旧版Excel电子表格表示中导入/导出数据。

此格式是可选的,请使用 pip install "tablib[xls]" 使格式可用。

它的 import_set() 方法还支持 skip_lines 参数,您可以将该参数设置为在开始读取数据之前应跳过的行数。

在 3.1.0 版本发生变更: 这个 skip_lines 的参数 import_set() 已添加。

备注

XLS文件最多限制为65000行。使用 xlsx 以避免这种限制。

二进制警告

这个 xls 文件格式是二进制的,所以请确保以二进制模式写入:

with open('output.xls', 'wb') as f:
    f.write(data.export('xls'))

xlsx公司

在Excel 07+电子表格中导入/导出数据。

此格式是可选的,请使用 pip install "tablib[xlsx]" 使格式可用。

这个 import_set()import_book() 方法接受关键字参数 read_only 。如果它的值是 True (默认),xlsx数据源是延迟读取的。懒惰阅读通常会减少时间和内存消耗,尤其是对于大型电子表格。但是,它依赖于xlsx数据源声明正确的维度。某些程序会生成尺寸不正确的xlsx文件。这样的文件可能需要在通过传递关闭此优化的情况下加载 read_only=False

这个 import_set() 方法还支持 skip_lines 参数,您可以将该参数设置为在开始读取数据之前应跳过的行数。

在 3.1.0 版本发生变更: 这个 skip_lines 的参数 import_set() 已添加。

备注

当阅读 xlsx 文件包含单元格中的公式,则Tablib将读取单元格值,而不是单元格公式。

在 2.0.0 版本发生变更: 读取单元格值而不是公式。

调用可以将数据导出为xlsx格式 export('xlsx') 。有一些可选参数可用于控制导出。有关可用参数,请参见 tablib.formats._xlsx.XLSXFormat.export_set()

二进制警告

这个 xlsx 文件格式是二进制的,所以请确保以二进制模式写入:

with open('output.xlsx', 'wb') as f:
    f.write(data.export('xlsx'))

山药

在中导入/导出数据 YAML 格式。导出时,如果设置了标题,将返回对象的YAML列表。如果没有设置标题,则将返回列表(行)的YAML列表。

import假设(目前)头存在。

此格式是可选的,请使用 pip install "tablib[yaml]" 使格式可用。