Format agnostic tabular data library (XLS, JSON, YAML, CSV)
Project description
_____ ______ ___________ ______ __ /_______ ____ /_ ___ /___(_)___ /_ _ __/_ __ `/__ __ \__ / __ / __ __ \ / /_ / /_/ / _ /_/ /_ / _ / _ /_/ / \__/ \__,_/ /_.___/ /_/ /_/ /_.___/
Tablib is a format-agnostic tabular dataset library, written in Python.
Output formats supported:
Excel (Sets + Books)
JSON (Sets + Books)
YAML (Sets + Books)
HTML (Sets)
TSV (Sets)
CSV (Sets)
Note that tablib purposefully excludes XML support. It always will. (Note: This is a joke. Pull requests are welcome.)
Overview
- tablib.Dataset()
A Dataset is a table of tabular data. It may or may not have a header row. They can be build and manipulated as raw Python datatypes (Lists of tuples|dictionaries). Datasets can be imported from JSON, YAML, and CSV; they can be exported to Excel (XLS), JSON, YAML, and CSV.
- tablib.Databook()
A Databook is a set of Datasets. The most common form of a Databook is an Excel file with multiple spreadsheets. Databooks can be imported from JSON and YAML; they can be exported to Excel (XLS), JSON, and YAML.
Usage
Populate fresh data files:
headers = ('first_name', 'last_name') data = [ ('John', 'Adams'), ('George', 'Washington') ] data = tablib.Dataset(*data, headers=headers)
Intelligently add new rows:
>>> data.append(('Henry', 'Ford'))
Intelligently add new columns:
>>> data.append(col=(90, 67, 83), header='age')
Slice rows:
>>> print data[:2] [('John', 'Adams', 90), ('George', 'Washington', 67)]
Slice columns by header:
>>> print data['first_name'] ['John', 'George', 'Henry']
Easily delete rows:
>>> del data[1]
Exports
Drumroll please………..
JSON!
>>> print data.json [ { "last_name": "Adams", "age": 90, "first_name": "John" }, { "last_name": "Ford", "age": 83, "first_name": "Henry" } ]
YAML!
>>> print data.yaml - {age: 90, first_name: John, last_name: Adams} - {age: 83, first_name: Henry, last_name: Ford}
CSV…
>>> print data.csv first_name,last_name,age John,Adams,90 Henry,Ford,83
EXCEL!
>>> open('people.xls', 'wb').write(data.xls)
It’s that easy.
Installation
To install tablib, simply:
$ pip install tablib
Or, if you absolutely must:
$ easy_install tablib
Contribute
If you’d like to contribute, simply fork the repository, commit your changes to the develop branch (or branch off of it), and send a pull request. Make sure you add yourself to AUTHORS.
Roadmap
- v1.0.0:
Add hooks system
Tablib.ext namespace
Better 2.x/3.x handling (currently internal codebase fork)
Width detection on XLS out
History
0.9.6 (2011-05-12)
seperators renamed to separators
Full unicode CSV support
0.9.5 (2011-03-24)
Python 3.1, Python 3.2 Support (same code base!)
Formatter callback support
Various bug fixes
0.9.4 (2011-02-18)
Python 2.5 Support!
Tox Testing for 2.5, 2.6, 2.7
AnyJSON Integrated
OrderedDict support
Caved to community pressure (spaces)
0.9.3 (2011-01-31)
Databook duplication leak fix.
HTML Table output.
Added column sorting.
0.9.2 (2010-11-17)
Transpose method added to Datasets.
New frozen top row in Excel output.
Pickling support for Datasets and Rows.
Support for row/column stacking.
0.9.1 (2010-11-04)
Minor reference shadowing bugfix.
0.9.0 (2010-11-04)
Massive documentation update!
Tablib.org!
Row tagging and Dataset filtering!
Column insert/delete support
Column append API change (header required)
Internal Changes (Row object and use thereof)
0.8.5 (2010-10-06)
New import system. All dependencies attempt to load from site-packages, then fallback on tenderized modules.
0.8.4 (2010-10-04)
Updated XLS output: Only wrap if ‘\n’ in cell.
0.8.3 (2010-10-04)
Ability to append new column passing a callable as the value that will be applied to every row.
0.8.2 (2010-10-04)
Added alignment wrapping to written cells.
Added separator support to XLS.
0.8.1 (2010-09-28)
Packaging Fix
0.8.0 (2010-09-25)
New format plugin system!
Imports! ELEGANT Imports!
Tests. Lots of tests.
0.7.1 (2010-09-20)
Reverting methods back to properties.
Windows bug compensated in documentation.
0.7.0 (2010-09-20)
Renamed DataBook Databook for consistency.
Export properties changed to methods (XLS filename / StringIO bug).
Optional Dataset.xls(path=’filename’) support (for writing on windows).
Added utf-8 on the worksheet level.
0.6.4 (2010-09-19)
Updated unicode export for XLS.
More exhaustive unit tests.
0.6.3 (2010-09-14)
Added Dataset.append() support for columns.
0.6.2 (2010-09-13)
Fixed Dataset.append() error on empty dataset.
Updated Dataset.headers property w/ validation.
Added Testing Fixtures.
0.6.1 (2010-09-12)
Packaging hotfixes.
0.6.0 (2010-09-11)
Public Release.
Export Support for XLS, JSON, YAML, and CSV.
DataBook Export for XLS, JSON, and YAML.
Python Dict Property Support.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.