YATG
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.
Metadata
Release files for yatg 0.11.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| yatg-0.11.5.tar.gz | 15.5 kB | Without provenance | Details for yatg-0.11.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| yatg-0.11.5-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for yatg-0.11.5-py2.py3-none-any.whl |
Total release size: 41.1 kB
Release files / yatg-0.11.5.tar.gz
| Download URL | yatg-0.11.5.tar.gz |
|---|---|
| Size | 15.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f615083c11ba0debce74a6a32729075b8ca1258e4e3fc656df8309c47df9436
|
|
BLAKE2b-256 checksum How to use checksums |
8893bde2e4e68ae4735cf3d719745a2c8a572a751f00dc89b6cf3a545d408bee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / yatg-0.11.5-py2.py3-none-any.whl
| Download URL | yatg-0.11.5-py2.py3-none-any.whl |
|---|---|
| Size | 25.7 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
3d823711cfe0db3577276c3f56bd6cfe1faced4641b62f8d61d8f4e77f9bd3c1
|
|
BLAKE2b-256 checksum How to use checksums |
eca59c025ebd5e57be55ffa990697d18afea93786ba582eb5511138cd96c27ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for yatg 0.11.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.