A utility for generating ASCII art table
Project description
YATG (Yet Another Table Generator) is a utility for generating ASCII art table.
Introduction
This tool can convert csv or html to ASCII art table.
Example of output (emacs style):
+---------+-----------------+----------+ | | Average | Red eyes | | +--------+--------+ | | | height | weight | | +---------+--------+--------+----------+ | Males | 1.9 | 0.003 | 40% | +---------+--------+--------+----------+ | Females | 1.7 | 0.002 | 43% | +---------+--------+--------+----------+
Example of output (orgmode style):
| Header content 1 | Header content 2 | |------------------+------------------| | Body content 1 | Body content 2 | | Body content 3 | Body content 4 | | Body content 5 | Body content 6 |
Example of output (mysql style):
+------------------+------------------+ | Header content 1 | Header content 2 | +------------------+------------------+ | Body content 1 | Body content 2 | | Body content 3 | Body content 4 | | Body content 5 | Body content 6 | +------------------+------------------+
Example of output (markdown style):
| Header content 1 | Header content 2 | |------------------|------------------| | Body content 1 | Body content 2 | | Body content 3 | Body content 4 | | Body content 5 | Body content 6 |
Installation
To install YATG from PyPI:
$ pip install yatg
Or from github:
$ curl -O https://raw.githubusercontent.com/10gic/yatg/master/yatg/yatg.py && chmod u+x yatg.py
Usage
As command-line tool
Options:
usage: yatg [-h] [-i INFILE] [-f FORMAT] [-d DELIMITER] [-o OUTFILE] [-s STYLE] [--no-header] [--column-align ALIGN] [--width1-chars CHARS] [--align-in-tty] [--version] Yet Another Table Generator, convert CSV or html table to ASCII art table. optional arguments: -h, --help show this help message and exit -i INFILE, --input-file INFILE source file, read from stdin if not specified -f FORMAT, --input-format FORMAT format of input file, can be 'html' or 'csv', auto guess it if not specified -d DELIMITER, --csv-delimiter DELIMITER delimiter of csv data, guess it if not specified -o OUTFILE, --output-file OUTFILE output file, write to stdout if not specified -s STYLE, --output-style STYLE specify output table style, support 'orgmode', 'emacs', 'mysql', 'markdown', default is orgmode style --no-header horizontal header line would not be printed if this option present --column-align ALIGN specify align string of columns, support 'l/r'. For example, 'llrr' specify first two colums align left, 3rd and 4th columns align right. Default alignment is left. --width1-chars CHARS specify chars that should consider one character width by force, only 'emoji' is supported currently. This option requires package emoji. --align-in-tty set column aligned in tty. This option requires package blessed. If this option present, option --width1-chars would be ignored. NOTE: (1) this option requires you in a tty, (2) each column width must less than width of tty, please enlarge your tty window if you have long cell data. --version show version and exit.
As a library
Example:
>>> import yatg >>> print(yatg.csv_2_ascii_table([["head1", "head2"], ... ["content1", "content2"], ... ["content3", "content4"]])) | head1 | head2 | |----------+----------| | content1 | content2 | | content3 | content4 | >>> print(yatg.html_2_ascii_table(""" ... <table border="1"> ... <tr> ... <td>1st row</td> ... <td colspan=2>colspan2</td> ... <td rowspan=2>rowspan2</td> ... </tr> ... <tr> ... <td>2nd row</td> ... <td>under colspan2</td> ... <td>under colspan2</td> ... </tr> ... <tr> ... <td>3rd row</td> ... <td colspan=3>colspan3</td> ... </tr> ... </table>""", output_style='emacs')) +---------+---------------------------------+----------+ | 1st row | colspan2 | rowspan2 | +---------+----------------+----------------+ | | 2nd row | under colspan2 | under colspan2 | | +---------+----------------+----------------+----------+ | 3rd row | colspan3 | +---------+--------------------------------------------+
Function doc:
>>> print(yatg.csv_2_ascii_table.__doc__) Convert csv to ascii table. Arguments: csv_content: Data of input csv, can be string or 'list of list'. csv_delimiter: The delimiter of csv string data (default is ','). output_style: The output style: emacs|orgmode|mysql|markdown (default is 'orgmode'). column_align: align string of columns, support 'l/r'. For example, 'llrr' specify first two colums align left, 3rd and 4th columns align right. Default alignment is left. no_header: whether print horizontal header line. Default is False align_in_tty: force align column in tty Returns: Ascii table >>> print(yatg.html_2_ascii_table.__doc__) Convert html table to ascii table. Arguments: html_content: Data of input html. output_style: The output style: emacs|orgmode|mysql|markdown (default is 'orgmode'). column_align: align string of columns, support 'l/r'. For example, 'llrr' specify first two colums align left, 3rd and 4th columns align right. Default alignment is left. no_header: whether print horizontal header line. Default is False align_in_tty: force align column in tty Returns: Ascii table
Feature
Support colspan and rowspan.
Support multi output styles: emacs/orgmode(default)/mysql/markdown style.
Table is keep aligned when cell contains both ASCII and non-ASCII charaters.
Support custom column alignment.
Header line is optional.
Compatible with Python 2 and Python 3.
No 3rd-part dependency for major functionalities.
Limitation
Input file must encoded by UTF-8.
Multi-line text in one table cell would flatten to one line.
Line wrap in cell is not supported.
Nested tables are not supported.
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.
Source Distribution
Built Distribution
File details
Details for the file yatg-0.11.5.tar.gz
.
File metadata
- Download URL: yatg-0.11.5.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f615083c11ba0debce74a6a32729075b8ca1258e4e3fc656df8309c47df9436 |
|
MD5 | 9e058d45c46a59233578bee369031859 |
|
BLAKE2b-256 | 8893bde2e4e68ae4735cf3d719745a2c8a572a751f00dc89b6cf3a545d408bee |
File details
Details for the file yatg-0.11.5-py2.py3-none-any.whl
.
File metadata
- Download URL: yatg-0.11.5-py2.py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d823711cfe0db3577276c3f56bd6cfe1faced4641b62f8d61d8f4e77f9bd3c1 |
|
MD5 | a1045a5e1e60a5bbf3780cb2365d1e55 |
|
BLAKE2b-256 | eca59c025ebd5e57be55ffa990697d18afea93786ba582eb5511138cd96c27ca |