๐Ÿš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more โ†’
Socket
Sign inDemoInstall
Socket

table2string

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

table2string

A library to convert tables to string with full support for line breaks and formatting

2.0.1
PyPI
Maintainers
1

table2string

GitHub Actions Workflow Status Publish Python Package to PyPI

PyPi Package Version Supported Python versions PyPi status PyPi downloads

Code style: black mypy checked Linting: Ruff

Convert table to string

While there are several libraries available for converting tables to strings in Python, none seemed to meet my specific requirements.

  • Line Break Support: Easily include line breaks within cells for enhanced readability.
  • Subtable Support: Easily include a table within a table for a more flexible presentation.
  • Alignment: Easily align text in a cell in any direction.
  • Emoji Integration: Effortlessly incorporate emoji characters into your tables to add visual appeal and context.

Install

PyPI

pip install -U table2string

GitHub

pip install -U git+https://github.com/EgorKhabarov/table2string.git@master

Usage example

>>> from table2string import Table, Themes, HorizontalAlignment, VerticalAlignment
>>> Table([("1", "2", "3"), ("qwe", "rty\nuio", "")], name="Table Name", column_names=("c1", "c2", "c3")).print()
+----------------+
|   Table Name   |
+-----+-----+----+
| c1  | c2  | c3 |
+-----+-----+----+
|   1 |   2 |  3 |
+-----+-----+----+
| qwe | rty |    |
|     | uio |    |
+-----+-----+----+
>>> from io import StringIO
>>> Table.from_csv(StringIO('c1,c2,c3\n1,2,3\nqwe,"rty\nuio",'), name="Table Name").print()
+----------------+
|   Table Name   |
+-----+-----+----+
| c1  | c2  | c3 |
+-----+-----+----+
|   1 |   2 |  3 |
+-----+-----+----+
| qwe | rty |    |
|     | uio |    |
+-----+-----+----+
>>> import sqlite3
>>> cursor = sqlite3.connect(":memory:").cursor().execute(
...     "CREATE TABLE data (c1 TEXT, c2 TEXT, c3 TEXT);"
... ).executemany(
...     "INSERT INTO data (c1, c2, c3) VALUES (?, ?, ?);",
...     [("1", "2", "3"), ("qwe", "rty\nuio", "")],
... ).execute(
...     "SELECT c1, c2, c3 FROM data;"
... )
>>> Table.from_db_cursor(
...     cursor,
...     name="Table Name",
...     column_names=True,
... ).print()
+----------------+
|   Table Name   |
+-----+-----+----+
| c1  | c2  | c3 |
+-----+-----+----+
|   1 |   2 |  3 |
+-----+-----+----+
| qwe | rty |    |
|     | uio |    |
+-----+-----+----+
>>> Table(
...     [("c1", Table([("1", "2"), ("3", "4")], name="SubTable"))],
...     name="Table Name",
... ).print(v_align=("-",), max_width=(2, 8))
+---------------+
|  Table Name   |
+----+----------+
|    | SubTable |
|    +-----+----+
| c1 |   1 |  2 |
|    +-----+----+
|    |   3 |  4 |
+----+-----+----+

Arguments

ArgumentTypeExampleDescription
tableSequence[Sequence[Any]][("1", "2"), ("3", "4")]A two-dimensional matrix
h_aligntuple[HorizontalAlignment | str, ...] | HorizontalAlignment | strHorizontalAlignment.CENTERAllows you to align text in a cell horizontally
v_aligntuple[VerticalAlignment | str, ...] | VerticalAlignment | strVerticalAlignment.MIDDLEAllows you to align text in a cell vertically
namestr | None"Table Name"Table name
name_h_alignHorizontalAlignment | strHorizontalAlignment.CENTERAllows you to align table name horizontally
name_v_alignVerticalAlignment | strVerticalAlignment.MIDDLEAllows you to align table name vertically
column_namesSequence[str] | None("c1", "c2", ...column_count)Sets the names for the table columns
column_names_h_aligntuple[HorizontalAlignment | str, ...] | HorizontalAlignment | strHorizontalAlignment.CENTERAllows you to align column names horizontally
column_names_v_aligntuple[VerticalAlignment | str, ...] | VerticalAlignment | strVerticalAlignment.MIDDLEAllows you to align column names vertically
max_widthint | Tuple[int, ...] | None120Allows you to set the width of the entire table or individually for each column
max_heightint | None10Specifies the maximum height for rows
maximize_heightboolTrueForce height to be taken from max_height
line_break_symbolstr"\\"Line break symbol
cell_break_symbolstr"โ€ฆ"Symbol indicating the end of text when there is not enough height
sepbool | range | tuple(1, 3, 6)Handles the separators between table rows and can be either a boolean type or possess a __contains__ method
endstr | None"\n"Behaves the same as print(end=)
fileTextIOWrapper | Nonesys.stdout or io.StringIO()Behaves the same as print(file=)
themeThemeThemes.rounded_thickAllows you to set a specific theme for the table. For example, the border style
ignore_width_errorsboolFalseFixes errors in max_width if they exist
proportion_coefficientfloat0.5Affects the width distribution of the columns. A value of 0.0 corresponds to proportional distribution, 1.0 averages the values, and 2.0 inverts them

Text alignment

AlignExampleDescription
"<align>" or ("<align>",)"^" or ("^",)Setting align ("^") for all columns
("<align_1>", "<align_2>")("^", "<")Setting align_1 ("^") for the first column and align_2 ("<") for all other columns
("<align_1>", "<align_2>", "<align_3>")("^", "<", ">")Setting align_1 ("^") for the first column and align_2 ("<") for the second and align_3 (">") for the third column

You can also use the corresponding HorizontalAlignment or VerticalAlignment type

For name_h_align and name_v_align only the str type or the corresponding HorizontalAlignment or VerticalAlignment type is valid

HorizontalAlignment

AlignDescription
AUTO or AUTO_AUTO or * or **Alignment depends on the type. If this is a number and there are no line breaks in this cell, then align to the right; otherwise, align to the left.
LEFT or LEFT_LEFT or < or <<All lines are left aligned
CENTER or CENTER_CENTER or ^ or ^^All lines are center aligned
RIGHT or RIGHT_RIGHT or > or >>All lines are right aligned
LEFT_CENTER or <^The first line is left aligned and the remaining lines are centered
LEFT_RIGHT or <>The first line is left aligned and the remaining lines are right aligned
CENTER_LEFT or ^<The first line is aligned to the center, and the remaining lines are aligned to the left of the first line.
CENTER_RIGHT or ^>The first line is aligned to the center, and the remaining lines are aligned to the right of the first line.
RIGHT_LEFT or ><The first line is right aligned and the remaining lines are left aligned
RIGHT_CENTER or >^The first line is right aligned and the remaining lines are centered

VerticalAlignment

AlignDescription
TOP or ^Text are top aligned
MIDDLE or -Text are centered
BOTTOM or _Text are bottom aligned
Example
>>> from functools import partial
>>> sub_table_auto_func = partial(Table, [("123", "text",)], max_height=4, maximize_height=True)
>>> sub_table_func = partial(Table, [("first line\ntext",)], max_height=4, maximize_height=True)
>>> Table(
...     [
...         *(
...             [v_align, sub_table_auto_func(h_align="*", v_align=v_align)] + [
...                 sub_table_func(h_align=h_align, v_align=v_align)
...                 for h_align in ("<", ">", "^", "^<", "^>")
...             ]
...             for v_align in ("^", "-", "_")
...         )
...     ],
...     column_names=(" ", "*", "<", ">", "^", "^<", "^>"),
... ).print(max_width=(1, len("first line")+4), v_align=("-",))
+---+----------------+----------------+----------------+----------------+----------------+----------------+
|   |       *        |       <        |       >        |       ^        |       ^<       |       ^>       |
+---+-------+--------+----------------+----------------+----------------+----------------+----------------+
|   |   123 | text   | first line     |     first line |   first line   |   first line   |   first line   |
| ^ |       |        | text           |           text |      text      |   text         |         text   |
|   |       |        |                |                |                |                |                |
|   |       |        |                |                |                |                |                |
+---+-------+--------+----------------+----------------+----------------+----------------+----------------+
|   |       |        |                |                |                |                |                |
| - |   123 | text   | first line     |     first line |   first line   |   first line   |   first line   |
|   |       |        | text           |           text |      text      |   text         |         text   |
|   |       |        |                |                |                |                |                |
+---+-------+--------+----------------+----------------+----------------+----------------+----------------+
|   |       |        |                |                |                |                |                |
| _ |       |        |                |                |                |                |                |
|   |       |        | first line     |     first line |   first line   |   first line   |   first line   |
|   |   123 | text   | text           |           text |      text      |   text         |         text   |
+---+-------+--------+----------------+----------------+----------------+----------------+----------------+

Custom width and height settings

WidthExampleDescription
<width>10Setting width (10) for the whole table
(<width>,)(10,)Setting width_1 (10) for all column
(<width_1>, <width_2>)(10, 20)Setting width_1 (10) for the first column and width_2 (20) for all other columns
(<width_1>, <width_2>, <width_3>)(10, 20, 30)Setting width_1 (10) for the first column and width_2 (20) for the second and width_3 (30) for the third column
Example
>>> # Width of the entire table with borders
>>> Table([(1, 12345, "example")]).print(max_width=30)
+-----+----------+-----------+
|   1 |    12345 | example   |
+-----+----------+-----------+
>>> # Width of each column individually
>>> Table([(1, 12345, "example")]).print(max_width=(10,))
+------------+------------+------------+
|          1 |      12345 | example    |
+------------+------------+------------+
>>> Table([(1, 12345, "example")]).print(max_width=(1, 8, 6))
+---+----------+--------+
| 1 |    12345 | exampl\|
|   |          | e      |
+---+----------+--------+
>>> Table([(1, 12345, "example")]).print(max_width=(1, 5, 7))
+---+-------+---------+
| 1 | 12345 | example |
+---+-------+---------+
>>> Table([("123456\n\n789000", "example")]).print(max_width=(3, 4), max_height=4)
+-----+------+
| 123\| exam\|
| 456 | ple  |
|     |      |
| 789โ€ฆ|      |
+-----+------+
>>> Table([("123456789",)]).print(max_width=(1,), max_height=1)
+---+
| 1โ€ฆ|
+---+
>>> Table([("123\n456\n789",)]).print(
...     max_width=(3,),
...     max_height=4,
...     maximize_height=True,
... )
+-----+
| 123 |
| 456 |
| 789 |
|     |
+-----+
>>> Table([("123456789",)]).print(
...     max_width=(3,),
...     max_height=4,
...     maximize_height=True,
... )
+-----+
| 123\|
| 456\|
| 789 |
|     |
+-----+

Separator settings

SeparatorDescription
sep=TrueAll horizontal dividers included
sep=FalseAll horizontal dividers are disabled
sep=(1,)Only first delimiter
sep=(1, 3, 5)Only first third and fifth separator
sep=range(1, 100, 5)Delimiter every five lines first 100 lines
Example
>>> table_1 = Table([("qwe", "rty\nuio"), ("123456\n\n789000", "example")])
>>> kwargs = {
...     "max_width": (3, 4),
...     "max_height": 4,
... }
>>> table_1.print(**kwargs, sep=True)
+-----+------+
| qwe | rty  |
|     | uio  |
+-----+------+
| 123\| exam\|
| 456 | ple  |
|     |      |
| 789โ€ฆ|      |
+-----+------+
>>> table_1.print(**kwargs, sep=False)
+-----+------+
| qwe | rty  |
|     | uio  |
| 123\| exam\|
| 456 | ple  |
|     |      |
| 789โ€ฆ|      |
+-----+------+
>>> table_2 = Table([("1", "2"), ("3", "4")], name="Name")
>>> table_2.print(sep=True)
+-------+
| Name  |
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
+---+---+
>>> table_2.print(sep=False)
+-------+
| Name  |
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
>>> table_3 = Table([("1", "2"), ("3", "4"), ("5", "6"), ("7", "8")])
>>> table_3.print(sep=(1,))
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> table_3.print(sep=(2,))
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> table_3.print(sep=(1, 3))
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
+---+---+
| 7 | 8 |
+---+---+
>>> table_4 = Table([("1", "2"), ("3", "4"), ("5", "6"), ("7", "8")], name="Name")
>>> table_4.print(sep=(1,))
+-------+
| Name  |
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> table_4.print(sep=(2,))
+-------+
| Name  |
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> table_4.print(sep=(1, 3))
+-------+
| Name  |
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
+---+---+
| 7 | 8 |
+---+---+

Themes

Borders

Border types
>>> from table2string import Themes, HorizontalAlignment
>>> table = []
>>> example_table = Table([(" ", " "), (" ", " "), (" ", " ")])
>>> theme_names = (
...     ("ascii_thin", "ascii_thin_double"),
...     ("ascii_double", "ascii_double_thin"),
...     ("thin", "thin_thick"),
...     ("thin_double", "rounded_double"),
...     ("rounded", "rounded_thick"),
...     ("thick", "thick_thin"),
...     ("double", "double_thin"),
...     ("booktabs", "ascii_booktabs"),
...     ("markdown", "None"),
... )
>>> for names in theme_names:
...     table.append([])
...     for name in names:
...         string_table = example_table.stringify(
...             theme=getattr(Themes, name, Themes.ascii_thin)
...         )
...         table[-1].append(f"{name}\n{string_table}")
>>> Table(table).print(theme=Themes.thin, h_align=HorizontalAlignment.CENTER)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ascii_thin  โ”‚ ascii_thin_double โ”‚
โ”‚  +---+---+   โ”‚     +---+---+     โ”‚
โ”‚  |   |   |   โ”‚     |   |   |     โ”‚
โ”‚  +---+---+   โ”‚     +===+===+     โ”‚
โ”‚  |   |   |   โ”‚     |   |   |     โ”‚
โ”‚  +---+---+   โ”‚     +---+---+     โ”‚
โ”‚  |   |   |   โ”‚     |   |   |     โ”‚
โ”‚  +---+---+   โ”‚     +---+---+     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ ascii_double โ”‚ ascii_double_thin โ”‚
โ”‚  +===+===+   โ”‚     +===+===+     โ”‚
โ”‚  โ€–   โ€–   โ€–   โ”‚     โ€–   โ€–   โ€–     โ”‚
โ”‚  +===+===+   โ”‚     +---+---+     โ”‚
โ”‚  โ€–   โ€–   โ€–   โ”‚     โ€–   โ€–   โ€–     โ”‚
โ”‚  +===+===+   โ”‚     +===+===+     โ”‚
โ”‚  โ€–   โ€–   โ€–   โ”‚     โ€–   โ€–   โ€–     โ”‚
โ”‚  +===+===+   โ”‚     +===+===+     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚     thin     โ”‚    thin_thick     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”   โ”‚     โ”Œโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค   โ”‚     โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค   โ”‚     โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜   โ”‚     โ””โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ thin_double  โ”‚  rounded_double   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”   โ”‚     โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ•žโ•โ•โ•โ•ชโ•โ•โ•โ•ก   โ”‚     โ•žโ•โ•โ•โ•ชโ•โ•โ•โ•ก     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค   โ”‚     โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜   โ”‚     โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   rounded    โ”‚   rounded_thick   โ”‚
โ”‚  โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ   โ”‚     โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค   โ”‚     โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค   โ”‚     โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค     โ”‚
โ”‚  โ”‚   โ”‚   โ”‚   โ”‚     โ”‚   โ”‚   โ”‚     โ”‚
โ”‚  โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ   โ”‚     โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    thick     โ”‚    thick_thin     โ”‚
โ”‚  โ”โ”โ”โ”โ”ณโ”โ”โ”โ”“   โ”‚     โ”โ”โ”โ”โ”ณโ”โ”โ”โ”“     โ”‚
โ”‚  โ”ƒ   โ”ƒ   โ”ƒ   โ”‚     โ”ƒ   โ”ƒ   โ”ƒ     โ”‚
โ”‚  โ”ฃโ”โ”โ”โ•‹โ”โ”โ”โ”ซ   โ”‚     โ” โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”จ     โ”‚
โ”‚  โ”ƒ   โ”ƒ   โ”ƒ   โ”‚     โ”ƒ   โ”ƒ   โ”ƒ     โ”‚
โ”‚  โ”ฃโ”โ”โ”โ•‹โ”โ”โ”โ”ซ   โ”‚     โ”ฃโ”โ”โ”โ•‹โ”โ”โ”โ”ซ     โ”‚
โ”‚  โ”ƒ   โ”ƒ   โ”ƒ   โ”‚     โ”ƒ   โ”ƒ   โ”ƒ     โ”‚
โ”‚  โ”—โ”โ”โ”โ”ปโ”โ”โ”โ”›   โ”‚     โ”—โ”โ”โ”โ”ปโ”โ”โ”โ”›     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    double    โ”‚    double_thin    โ”‚
โ”‚  โ•”โ•โ•โ•โ•ฆโ•โ•โ•โ•—   โ”‚     โ•”โ•โ•โ•โ•ฆโ•โ•โ•โ•—     โ”‚
โ”‚  โ•‘   โ•‘   โ•‘   โ”‚     โ•‘   โ•‘   โ•‘     โ”‚
โ”‚  โ• โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ   โ”‚     โ•Ÿโ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ•ข     โ”‚
โ”‚  โ•‘   โ•‘   โ•‘   โ”‚     โ•‘   โ•‘   โ•‘     โ”‚
โ”‚  โ• โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ   โ”‚     โ• โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ     โ”‚
โ”‚  โ•‘   โ•‘   โ•‘   โ”‚     โ•‘   โ•‘   โ•‘     โ”‚
โ”‚  โ•šโ•โ•โ•โ•ฉโ•โ•โ•โ•   โ”‚     โ•šโ•โ•โ•โ•ฉโ•โ•โ•โ•     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   booktabs   โ”‚  ascii_booktabs   โ”‚
โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€    โ”‚      -------      โ”‚
โ”‚              โ”‚                   โ”‚
โ”‚   โ”โ”โ”โ”โ”โ”โ”    โ”‚      =======      โ”‚
โ”‚              โ”‚                   โ”‚
โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€    โ”‚      -------      โ”‚
โ”‚              โ”‚                   โ”‚
โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€    โ”‚      -------      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   markdown   โ”‚       None        โ”‚
โ”‚  |   |   |   โ”‚     +---+---+     โ”‚
โ”‚  |---|---|   โ”‚     |   |   |     โ”‚
โ”‚  |   |   |   โ”‚     +---+---+     โ”‚
โ”‚  |   |   |   โ”‚     |   |   |     โ”‚
โ”‚              โ”‚     +---+---+     โ”‚
โ”‚              โ”‚     |   |   |     โ”‚
โ”‚              โ”‚     +---+---+     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Example
>>> from table2string import Table, Themes
>>> name = "Table Name"
>>> column_names = ("c1", "c2", "3")
>>> table = [("1", "2", "3"), ("qwe", "rty\nuio", "")]
>>> t = Table(table)
>>> t_name = Table(table, name=name)
>>> t_column_names = Table(table, column_names=column_names)
>>> t_name_column_names = Table(table, name=name, column_names=column_names)

Themes.ascii_thin

>>> t.print(theme=Themes.ascii_thin)
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> t_column_names.print(theme=Themes.ascii_thin)
+-----+-----+---+
| c1  | c2  | 3 |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> t_name.print(theme=Themes.ascii_thin)
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> t_name_column_names.print(theme=Themes.ascii_thin)
+---------------+
|  Table Name   |
+-----+-----+---+
| c1  | c2  | 3 |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+

Themes.ascii_thin_double
>>> t.print(theme=Themes.ascii_thin_double)
+-----+-----+---+
|   1 |   2 | 3 |
+=====+=====+===+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> t_column_names.print(theme=Themes.ascii_thin_double)
+-----+-----+---+
| c1  | c2  | 3 |
+=====+=====+===+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> t_name.print(theme=Themes.ascii_thin_double)
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+=====+=====+===+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> t_name_column_names.print(theme=Themes.ascii_thin_double)
+---------------+
|  Table Name   |
+-----+-----+---+
| c1  | c2  | 3 |
+=====+=====+===+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+

Themes.ascii_double
>>> t.print(theme=Themes.ascii_double)
+=====+=====+===+
โ€–   1 โ€–   2 โ€– 3 โ€–
+=====+=====+===+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+
>>> t_column_names.print(theme=Themes.ascii_double)
+=====+=====+===+
โ€– c1  โ€– c2  โ€– 3 โ€–
+=====+=====+===+
โ€–   1 โ€–   2 โ€– 3 โ€–
+=====+=====+===+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+
>>> t_name.print(theme=Themes.ascii_double)
+===============+
โ€–  Table Name   โ€–
+=====+=====+===+
โ€–   1 โ€–   2 โ€– 3 โ€–
+=====+=====+===+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+
>>> t_name_column_names.print(theme=Themes.ascii_double)
+===============+
โ€–  Table Name   โ€–
+=====+=====+===+
โ€– c1  โ€– c2  โ€– 3 โ€–
+=====+=====+===+
โ€–   1 โ€–   2 โ€– 3 โ€–
+=====+=====+===+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+

Themes.ascii_double_thin
>>> t.print(theme=Themes.ascii_double_thin)
+=====+=====+===+
โ€–   1 โ€–   2 โ€– 3 โ€–
+-----+-----+---+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+
>>> t_column_names.print(theme=Themes.ascii_double_thin)
+=====+=====+===+
โ€– c1  โ€– c2  โ€– 3 โ€–
+-----+-----+---+
โ€–   1 โ€–   2 โ€– 3 โ€–
+=====+=====+===+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+
>>> t_name.print(theme=Themes.ascii_double_thin)
+===============+
โ€–  Table Name   โ€–
+=====+=====+===+
โ€–   1 โ€–   2 โ€– 3 โ€–
+-----+-----+---+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+
>>> t_name_column_names.print(theme=Themes.ascii_double_thin)
+===============+
โ€–  Table Name   โ€–
+=====+=====+===+
โ€– c1  โ€– c2  โ€– 3 โ€–
+-----+-----+---+
โ€–   1 โ€–   2 โ€– 3 โ€–
+=====+=====+===+
โ€– qwe โ€– rty โ€–   โ€–
โ€–     โ€– uio โ€–   โ€–
+=====+=====+===+

Themes.ascii_booktabs
>>> t.print(theme=Themes.ascii_booktabs)
 --------------- 
    1     2   3  
 =============== 
  qwe   rty      
        uio      
 --------------- 
>>> t_column_names.print(theme=Themes.ascii_booktabs)
 --------------- 
  c1    c2    3  
 =============== 
    1     2   3  
 --------------- 
  qwe   rty      
        uio      
 --------------- 
>>> t_name.print(theme=Themes.ascii_booktabs)
 --------------- 
   Table Name    
 --------------- 
    1     2   3  
 =============== 
  qwe   rty      
        uio      
 --------------- 
>>> t_name_column_names.print(theme=Themes.ascii_booktabs)
 --------------- 
   Table Name    
 --------------- 
  c1    c2    3  
 =============== 
    1     2   3  
 --------------- 
  qwe   rty      
        uio      
 --------------- 

Themes.thin
>>> t.print(theme=Themes.thin)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_column_names.print(theme=Themes.thin)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_name.print(theme=Themes.thin)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_name_column_names.print(theme=Themes.thin)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜

Themes.thin_thick
>>> t.print(theme=Themes.thin_thick)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_column_names.print(theme=Themes.thin_thick)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_name.print(theme=Themes.thin_thick)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_name_column_names.print(theme=Themes.thin_thick)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜

Themes.thin_double
>>> t.print(theme=Themes.thin_double)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_column_names.print(theme=Themes.thin_double)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_name.print(theme=Themes.thin_double)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜
>>> t_name_column_names.print(theme=Themes.thin_double)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜

Themes.rounded
>>> t.print(theme=Themes.rounded)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_column_names.print(theme=Themes.rounded)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_name.print(theme=Themes.rounded)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_name_column_names.print(theme=Themes.rounded)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ

Themes.rounded_thick
>>> t.print(theme=Themes.rounded_thick)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_column_names.print(theme=Themes.rounded_thick)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_name.print(theme=Themes.rounded_thick)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_name_column_names.print(theme=Themes.rounded_thick)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”ฅ
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ

Themes.rounded_double
>>> t.print(theme=Themes.rounded_double)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_column_names.print(theme=Themes.rounded_double)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ฎ
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_name.print(theme=Themes.rounded_double)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ
>>> t_name_column_names.print(theme=Themes.rounded_double)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚  Table Name   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ค
โ”‚ c1  โ”‚ c2  โ”‚ 3 โ”‚
โ•žโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•ก
โ”‚   1 โ”‚   2 โ”‚ 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”ค
โ”‚ qwe โ”‚ rty โ”‚   โ”‚
โ”‚     โ”‚ uio โ”‚   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ•ฏ

Themes.thick
>>> t.print(theme=Themes.thick)
โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”“
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›
>>> t_column_names.print(theme=Themes.thick)
โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”“
โ”ƒ c1  โ”ƒ c2  โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›
>>> t_name.print(theme=Themes.thick)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ  Table Name   โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”ซ
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›
>>> t_name_column_names.print(theme=Themes.thick)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ  Table Name   โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”ซ
โ”ƒ c1  โ”ƒ c2  โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›

Themes.thick_thin
>>> t.print(theme=Themes.thick_thin)
โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”“
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ” โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”จ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›
>>> t_column_names.print(theme=Themes.thick_thin)
โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”“
โ”ƒ c1  โ”ƒ c2  โ”ƒ 3 โ”ƒ
โ” โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”จ
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›
>>> t_name.print(theme=Themes.thick_thin)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ  Table Name   โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”ซ
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ” โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”จ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›
>>> t_name_column_names.print(theme=Themes.thick_thin)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ  Table Name   โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”ซ
โ”ƒ c1  โ”ƒ c2  โ”ƒ 3 โ”ƒ
โ” โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”€โ”€โ•‚โ”€โ”€โ”€โ”จ
โ”ƒ   1 โ”ƒ   2 โ”ƒ 3 โ”ƒ
โ”ฃโ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”โ”โ•‹โ”โ”โ”โ”ซ
โ”ƒ qwe โ”ƒ rty โ”ƒ   โ”ƒ
โ”ƒ     โ”ƒ uio โ”ƒ   โ”ƒ
โ”—โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”›

Themes.double
>>> t.print(theme=Themes.double)
โ•”โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•—
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•
>>> t_column_names.print(theme=Themes.double)
โ•”โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•—
โ•‘ c1  โ•‘ c2  โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•
>>> t_name.print(theme=Themes.double)
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  Table Name   โ•‘
โ• โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•ฃ
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•
>>> t_name_column_names.print(theme=Themes.double)
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  Table Name   โ•‘
โ• โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•ฃ
โ•‘ c1  โ•‘ c2  โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•

Themes.double_thin
>>> t.print(theme=Themes.double_thin)
โ•”โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•—
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ•Ÿโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ•ข
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•
>>> t_column_names.print(theme=Themes.double_thin)
โ•”โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•—
โ•‘ c1  โ•‘ c2  โ•‘ 3 โ•‘
โ•Ÿโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ•ข
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•
>>> t_name.print(theme=Themes.double_thin)
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  Table Name   โ•‘
โ• โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•ฃ
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ•Ÿโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ•ข
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•
>>> t_name_column_names.print(theme=Themes.double_thin)
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  Table Name   โ•‘
โ• โ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•โ•โ•ฆโ•โ•โ•โ•ฃ
โ•‘ c1  โ•‘ c2  โ•‘ 3 โ•‘
โ•Ÿโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ”€โ”€โ•ซโ”€โ”€โ”€โ•ข
โ•‘   1 โ•‘   2 โ•‘ 3 โ•‘
โ• โ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•โ•โ•ฌโ•โ•โ•โ•ฃ
โ•‘ qwe โ•‘ rty โ•‘   โ•‘
โ•‘     โ•‘ uio โ•‘   โ•‘
โ•šโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•โ•โ•ฉโ•โ•โ•โ•

Themes.booktabs
>>> t.print(theme=Themes.booktabs)
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
    1     2   3  
 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 
  qwe   rty      
        uio      
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
>>> t_column_names.print(theme=Themes.booktabs)
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
  c1    c2    3  
 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 
    1     2   3  
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
  qwe   rty      
        uio      
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
>>> t_name.print(theme=Themes.booktabs)
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
   Table Name    
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
    1     2   3  
 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 
  qwe   rty      
        uio      
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
>>> t_name_column_names.print(theme=Themes.booktabs)
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
   Table Name    
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
  c1    c2    3  
 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 
    1     2   3  
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 
  qwe   rty      
        uio      
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 

Themes.markdown
>>> t.print(theme=Themes.markdown)
|   1 |   2 | 3 |
|-----|-----|---|
| qwe | rty |   |
|     | uio |   |
>>> t_column_names.print(theme=Themes.markdown)
| c1  | c2  | 3 |
|-----|-----|---|
|   1 |   2 | 3 |
| qwe | rty |   |
|     | uio |   |
>>> t_name.print(theme=Themes.markdown)
|  Table Name   |
|   1 |   2 | 3 |
|-----|-----|---|
| qwe | rty |   |
|     | uio |   |
>>> t_name_column_names.print(theme=Themes.markdown)
|  Table Name   |
| c1  | c2  | 3 |
|-----|-----|---|
|   1 |   2 | 3 |
| qwe | rty |   |
|     | uio |   |

Emojis

Example
from prettytable import PrettyTable
from table2string import Table

names = ("plain text", "emoji")
table = [
    (
        "text\ntext",
        "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง\n"
        "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ\n"
        "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ๐Ÿ‘ฏ๐Ÿ‘ฉโ€๐Ÿฆผ๐Ÿ‘ญ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ\n"
        "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง\n"
        "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ",
    ),
]
t = PrettyTable(title="prettytable", field_names=names, h_align="c")
t.add_rows(table)
print(t)

t = Table(table, name="table2string", column_names=names)
t.print(h_align="^", sep=(1,))
Windows Terminal

emoji_example_1.png

Windows 10

emoji_example_windows_10_terminal.png

Windows 11

emoji_example_windows_11_terminal.png

VT100 terminal emulator

emoji_example_VT100_terminal_emulator.png

Subtable

Example
>>> Table(
...     [
...         ("1",),
...         (Table([("2", "3")]),),
...     ]
... ).print()
+-------+
|     1 |
+---+---+
| 2 | 3 |
+---+---+
>>> Table([(
...     Table([(
...         Table([(
...             Table([(
...                 Table([(
...                     Table([(
...                         Table([(
...                             Table(
...                                 [
...                                     ("1",),
...                                     (Table([("2", "3")]),),
...                                 ]
...                             ),
...                         )]),
...                     )]),
...                 )]),
...             )]),
...         )]),
...     )]),
... )]).print()
+-------+
|     1 |
+---+---+
| 2 | 3 |
+---+---+
>>> Table(
...     [
...         (
...             "123",
...             Table(
...                 [
...                     ("456",),
...                     (Table([("789", "101")]),),
...                 ]
...             ),
...         ),
...     ]
... ).print()
+-----+-----------+
| 123 |       456 |
|     +-----+-----+
|     | 789 | 101 |
+-----+-----+-----+

Keywords

string

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts