Plain text tables for Python 3
Python
Latest commit 5cc96f6 Jun 26, 2016 kk- improvements
Permalink
Failed to load latest commit information.
txtable
.gitignore
LICENSE
README.rst
setup.py

README.rst

txtable - Plain text tables for Python 3

Pretty-print tabular data as plain text. Supports Markdown and reStructuredText tables too.

Sample outputs

Default formatter

Date        Mobile Operating System  Percent of Usage
==========  =======================  ================
2008-12-01                  Android                 0
2008-12-01                      iOS             32.56
2008-12-01                SymbianOS             42.02
2008-12-01                Series 40                 0
2008-12-01            BlackBerry OS                 0
2008-12-01                  Samsung                 0
2008-12-01                  Unknown                16
2008-12-01            Windows Phone                 0

Headless formatter

Date        Mobile Operating System  Percent of Usage
2008-12-01                  Android                 0
2008-12-01                      iOS             32.56
2008-12-01                SymbianOS             42.02
2008-12-01                Series 40                 0
2008-12-01            BlackBerry OS                 0

MD formatter

Date       | Mobile Operating System | Percent of Usage
---------- | ----------------------- | ----------------
2008-12-01 |                 Android |                0
2008-12-01 |                     iOS |            32.56
2008-12-01 |               SymbianOS |            42.02
2008-12-01 |               Series 40 |                0
2008-12-01 |           BlackBerry OS |                0

RST formatter

+------------+-------------------------+------------------+
| Date       | Mobile Operating System | Percent of Usage |
+============+=========================+==================+
| 2008-12-01 |                 Android |                0 |
+------------+-------------------------+------------------+
| 2008-12-01 |                     iOS |            32.56 |
+------------+-------------------------+------------------+
| 2008-12-01 |               SymbianOS |            42.02 |
+------------+-------------------------+------------------+
| 2008-12-01 |               Series 40 |                0 |
+------------+-------------------------+------------------+
| 2008-12-01 |           BlackBerry OS |                0 |
+------------+-------------------------+------------------+

Installation

It's the usual process as with any other Python package:

python3 setup.py install

Or install with pip:

pip3 install txtable

Usage as a module

Default usage:

# let's pretty-print a CSV file
import csv
from txtable import TextTable

with open("cities.csv") as f:
    data = list(csv.reader(f))

# the TextTable constructor takes a sequence type as the first argument
print(TextTable(data))

Use a formatter (available formatters are DefaultFormatter, HeadlessFormatter, MdFormatter, RstFormatter):

print(TextTable(data, formatter=MdFormatter()))

Command-line usage

The command-line interface supports formatting input data in JSON and CSV format. Input can be a list of files or stdin.

cat cities.csv | python3 -m txtable -t csv -f md
curl http://ponydealer.com/api/available.json | python3 -m txtable -t json

Command-line help

usage: txtable [-h] [-f FORMATTER] [-t TYPE] [files [files ...]]

positional arguments:
  files                 Path to input files (json/csv) or read from stdin when
                        empty (default: [])

optional arguments:
  -h, --help            show this help message and exit
  -f FORMATTER, --formatter FORMATTER
                        Table format: default, headless, md (Markdown) or rst
                        (ReStructuredText) (default: default)
  -t TYPE, --type TYPE  Input data type to read from stdin: json/csv (default:
                        json)