table2string


Nametable2string JSON
Version 1.3.0 PyPI version JSON
download
home_pageNone
SummaryA library to convert tables to string with full support for line breaks and formatting
upload_time2024-06-07 19:04:49
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseGPL2
keywords string table tools
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # table2string

[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/EgorKhabarov/table2string/tests.yml?style=flat&logo=GitHub&label=Tests)](https://github.com/EgorKhabarov/table2string/actions/workflows/tests.yml)
[![Publish Python Package to PyPI](https://img.shields.io/github/actions/workflow/status/EgorKhabarov/table2string/publish.yml?style=flat&logo=GitHub&label=Publish%20to%20PyPI)](https://github.com/EgorKhabarov/table2string/actions/workflows/publish.yml)

[![PyPi Package Version](https://img.shields.io/pypi/v/table2string.svg?style=flat&logo=pypi)](https://pypi.python.org/pypi/table2string)
[![Supported Python versions](https://img.shields.io/pypi/pyversions/table2string.svg?style=flat&logo=pypi)](https://pypi.python.org/pypi/table2string)
[![PyPi status](https://img.shields.io/pypi/status/table2string.svg?style=flat&logo=pypi)](https://pypi.python.org/pypi/table2string)
[![PyPi downloads](https://img.shields.io/pypi/dm/table2string.svg?style=flat&logo=pypi)](https://pypi.org/project/table2string/)

## 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.
- **Emoji Integration:** Effortlessly incorporate emoji characters into your tables to add visual appeal and context.

---

# Install

## PyPI

```shell
pip install -U table2string
```

## GitHub

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

---

# Usage example

```pycon
>>> from table2string import print_table, stringify_table
>>> print_table([("1", "2", "3"), ("qwe", "rty\nuio", "")], name="Table Name")
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> print(stringify_table([("1", "2", "3"), ("qwe", "rty\nuio", "")], name="Table Name"))
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> from io import StringIO
>>> from table2string import Table
>>> 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 |    |
+-----+-----+----+
>>> Table.from_csv(StringIO('c1,c2,c3\n1,2,3\nqwe,"rty\nuio",'), name="Table Name", skip_first_line=True).print()
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> import sqlite3
>>> cursor = sqlite3.connect(":memory:").cursor()
>>> 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;"
... ) and None  # because this method returns a cursor
>>> Table.from_db_cursor(cursor, name="Table Name").print()
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> cursor.execute("SELECT c1, c2, c3 FROM data;") and None
>>> Table.from_db_cursor(cursor, name="Table Name", column_names=True).print()
+----------------+
|   Table Name   |
+-----+-----+----+
| c1  | c2  | c3 |
+-----+-----+----+
|   1 |   2 |  3 |
+-----+-----+----+
| qwe | rty |    |
|     | uio |    |
+-----+-----+----+

```

## Custom width and height settings

<details>
<summary>Example</summary>

```pycon
>>> # Width of the entire table with borders
>>> print_table([(1,), (2.345,), ("example",)], max_width=10)
+--------+
|      1 |
+--------+
|  2.345 |
+--------+
| exampl↩|
| e      |
+--------+
>>> # Width of each column individually
>>> print_table([(1,), (2.345,), ("example",)], max_width=(10,))
+------------+
|          1 |
+------------+
|      2.345 |
+------------+
| example    |
+------------+
>>> print_table([("123456\n\n789000", "example")], max_width=(3, 4), max_height=4)
+-----+------+
| 123↩| exam↩|
| 456 | ple  |
|     |      |
| 789…|      |
+-----+------+
>>> print_table([("123456789",)], max_width=(1,), max_height=1)
+---+
| 1…|
+---+
>>> print_table(
...     table=[("123\n456\n789",)],
...     max_width=(3,),
...     max_height=4,
...     maximize_height=True,
... )
+-----+
| 123 |
| 456 |
| 789 |
|     |
+-----+
>>> print_table(
...     table=[("123456789",)],
...     max_width=(3,),
...     max_height=4,
...     maximize_height=True,
... )
+-----+
| 123↩|
| 456↩|
| 789 |
|     |
+-----+

```
</details>

## Text alignment

<details>
<summary>Example</summary>

```pycon
>>> kwargs_1 = {
...     "table": [("1", "123456789\nqwerty\nasdfghjklzxcvb")],
...     "name": "Table Name\nName\nNaaaaame",
...     "max_width": (5, 15),
... }
>>> print_table(**kwargs_1)
+-------------------------+
|       Table Name        |
|          Name           |
|        Naaaaame         |
+-------+-----------------+
|     1 | 123456789       |
|       | qwerty          |
|       | asdfghjklzxcvb  |
+-------+-----------------+
>>> print_table(**kwargs_1, align="*", name_align="*")  # align="**", name_align="**"
+-------------------------+
| Table Name              |
| Name                    |
| Naaaaame                |
+-------+-----------------+
|     1 | 123456789       |
|       | qwerty          |
|       | asdfghjklzxcvb  |
+-------+-----------------+
>>> print_table(**kwargs_1, align="<", name_align="<")  # align="<<", name_align="<<"
+-------------------------+
| Table Name              |
| Name                    |
| Naaaaame                |
+-------+-----------------+
| 1     | 123456789       |
|       | qwerty          |
|       | asdfghjklzxcvb  |
+-------+-----------------+
>>> print_table(**kwargs_1, align=">", name_align=">")  # align=">>", name_align=">>"
+-------------------------+
|              Table Name |
|                    Name |
|                Naaaaame |
+-------+-----------------+
|     1 |       123456789 |
|       |          qwerty |
|       |  asdfghjklzxcvb |
+-------+-----------------+
>>> print_table(**kwargs_1, align="^", name_align="^")  # align="^^", name_align="^^"
+-------------------------+
|       Table Name        |
|          Name           |
|        Naaaaame         |
+-------+-----------------+
|   1   |    123456789    |
|       |     qwerty      |
|       | asdfghjklzxcvb  |
+-------+-----------------+
>>> print_table(**kwargs_1, align="^<", name_align="^<")
+-------------------------+
|       Table Name        |
|       Name              |
|       Naaaaame          |
+-------+-----------------+
|   1   | 123456789       |
|       | qwerty          |
|       | asdfghjklzxcvb  |
+-------+-----------------+
>>> print_table(**kwargs_1, align="^>", name_align="^>")
+-------------------------+
|       Table Name        |
|             Name        |
|         Naaaaame        |
+-------+-----------------+
|   1   |      123456789  |
|       |         qwerty  |
|       | asdfghjklzxcvb  |
+-------+-----------------+
>>> print_table([("qwerty\n123456789\nasdfghjklzxcvb",)], max_width=(18,), align="^<")
+--------------------+
|   qwerty           |
|   123456789        |
|   asdfghjklzxcvb   |
+--------------------+
>>> print_table([("qwerty\n123456789\nasdfghjklzxcvb",)], max_width=(18,), align="^>")
+--------------------+
|           qwerty   |
|        123456789   |
|   asdfghjklzxcvb   |
+--------------------+

```
</details>

## Separator settings

<details>
<summary>Example</summary>

```pycon
>>> table_1 = [("qwe", "rty\nuio"), ("123456\n\n789000", "example")]
>>> kwargs = {
...     "max_width": (3, 4),
...     "max_height": 4,
...     "line_break_symbol": "/",
...     "cell_break_symbol": "…",
... }
>>> print_table(table_1, **kwargs, sep=True)
+-----+------+
| qwe | rty  |
|     | uio  |
+-----+------+
| 123/| exam/|
| 456 | ple  |
|     |      |
| 789…|      |
+-----+------+
>>> print_table(table_1, **kwargs, sep=False)
+-----+------+
| qwe | rty  |
|     | uio  |
| 123/| exam/|
| 456 | ple  |
|     |      |
| 789…|      |
+-----+------+
>>> table_2 = [("1", "2"), ("3", "4")]
>>> print_table(table_2, sep=True, name="Name")
+-------+
| Name  |
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
+---+---+
>>> print_table(table_2, sep=False, name="Name")
+-------+
| Name  |
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
>>> table_3 = [("1", "2"), ("3", "4"), ("5", "6"), ("7", "8")]
>>> print_table(table_3, sep=(1,))
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> print_table(table_3, sep=(2,))
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> print_table(table_3, sep=(1, 3))
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
+---+---+
| 7 | 8 |
+---+---+
>>> print_table(table_3, sep=(1,), name="Name")
+-------+
| Name  |
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> print_table(table_3, sep=(2,), name="Name")
+-------+
| Name  |
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
| 5 | 6 |
| 7 | 8 |
+---+---+
>>> print_table(table_3, sep=(1, 3), name="Name")
+-------+
| Name  |
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
| 5 | 6 |
+---+---+
| 7 | 8 |
+---+---+

```
</details>

## Borders

<details>
<summary>Border types</summary>

```text
╭───────────────────┬───────────────────────┬───────────────────────╮
│    ascii_thin     │ +---------+---------+ │ +-------------------+ │
│                   │ |    _    |    _    | │ |    ascii_thin     | │
│                   │ +---------+---------+ │ +---------+---------+ │
│                   │ |    _    |    _    | │ |    _    |    _    | │
│                   │ +---------+---------+ │ +---------+---------+ │
│                   │ |    _    |    _    | │ |    _    |    _    | │
│                   │ +---------+---------+ │ +---------+---------+ │
│                   │                       │ |    _    |    _    | │
│                   │                       │ +---------+---------+ │
├───────────────────┼───────────────────────┼───────────────────────┤
│ ascii_thin_double │ +---------+---------+ │ +-------------------+ │
│                   │ |    _    |    _    | │ | ascii_thin_double | │
│                   │ +=========+=========+ │ +---------+---------+ │
│                   │ |    _    |    _    | │ |    _    |    _    | │
│                   │ +---------+---------+ │ +=========+=========+ │
│                   │ |    _    |    _    | │ |    _    |    _    | │
│                   │ +---------+---------+ │ +---------+---------+ │
│                   │                       │ |    _    |    _    | │
│                   │                       │ +---------+---------+ │
├───────────────────┼───────────────────────┼───────────────────────┤
│   ascii_double    │ +=========+=========+ │ +===================+ │
│                   │ ‖    _    ‖    _    ‖ │ ‖   ascii_double    ‖ │
│                   │ +=========+=========+ │ +=========+=========+ │
│                   │ ‖    _    ‖    _    ‖ │ ‖    _    ‖    _    ‖ │
│                   │ +=========+=========+ │ +=========+=========+ │
│                   │ ‖    _    ‖    _    ‖ │ ‖    _    ‖    _    ‖ │
│                   │ +=========+=========+ │ +=========+=========+ │
│                   │                       │ ‖    _    ‖    _    ‖ │
│                   │                       │ +=========+=========+ │
├───────────────────┼───────────────────────┼───────────────────────┤
│ ascii_double_thin │ +=========+=========+ │ +===================+ │
│                   │ ‖    _    ‖    _    ‖ │ ‖ ascii_double_thin ‖ │
│                   │ +---------+---------+ │ +=========+=========+ │
│                   │ ‖    _    ‖    _    ‖ │ ‖    _    ‖    _    ‖ │
│                   │ +=========+=========+ │ +---------+---------+ │
│                   │ ‖    _    ‖    _    ‖ │ ‖    _    ‖    _    ‖ │
│                   │ +=========+=========+ │ +=========+=========+ │
│                   │                       │ ‖    _    ‖    _    ‖ │
│                   │                       │ +=========+=========+ │
├───────────────────┼───────────────────────┼───────────────────────┤
│  ascii_booktabs   │  -------------------  │  -------------------  │
│                   │      _         _      │    ascii_booktabs     │
│                   │  ===================  │  -------------------  │
│                   │      _         _      │      _         _      │
│                   │  -------------------  │  ===================  │
│                   │      _         _      │      _         _      │
│                   │  -------------------  │  -------------------  │
│                   │                       │      _         _      │
│                   │                       │  -------------------  │
├───────────────────┼───────────────────────┼───────────────────────┤
│       thin        │ ┌─────────┬─────────┐ │ ┌───────────────────┐ │
│                   │ │    _    │    _    │ │ │       thin        │ │
│                   │ ├─────────┼─────────┤ │ ├─────────┬─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ├─────────┼─────────┤ │ ├─────────┼─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ └─────────┴─────────┘ │ ├─────────┼─────────┤ │
│                   │                       │ │    _    │    _    │ │
│                   │                       │ └─────────┴─────────┘ │
├───────────────────┼───────────────────────┼───────────────────────┤
│    thin_thick     │ ┌─────────┬─────────┐ │ ┌───────────────────┐ │
│                   │ │    _    │    _    │ │ │    thin_thick     │ │
│                   │ ┝━━━━━━━━━┿━━━━━━━━━┥ │ ├─────────┬─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ├─────────┼─────────┤ │ ┝━━━━━━━━━┿━━━━━━━━━┥ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ └─────────┴─────────┘ │ ├─────────┼─────────┤ │
│                   │                       │ │    _    │    _    │ │
│                   │                       │ └─────────┴─────────┘ │
├───────────────────┼───────────────────────┼───────────────────────┤
│    thin_double    │ ┌─────────┬─────────┐ │ ┌───────────────────┐ │
│                   │ │    _    │    _    │ │ │    thin_double    │ │
│                   │ ╞═════════╪═════════╡ │ ├─────────┬─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ├─────────┼─────────┤ │ ╞═════════╪═════════╡ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ └─────────┴─────────┘ │ ├─────────┼─────────┤ │
│                   │                       │ │    _    │    _    │ │
│                   │                       │ └─────────┴─────────┘ │
├───────────────────┼───────────────────────┼───────────────────────┤
│      rounded      │ ╭─────────┬─────────╮ │ ╭───────────────────╮ │
│                   │ │    _    │    _    │ │ │      rounded      │ │
│                   │ ├─────────┼─────────┤ │ ├─────────┬─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ├─────────┼─────────┤ │ ├─────────┼─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ╰─────────┴─────────╯ │ ├─────────┼─────────┤ │
│                   │                       │ │    _    │    _    │ │
│                   │                       │ ╰─────────┴─────────╯ │
├───────────────────┼───────────────────────┼───────────────────────┤
│   rounded_thick   │ ╭─────────┬─────────╮ │ ╭───────────────────╮ │
│                   │ │    _    │    _    │ │ │   rounded_thick   │ │
│                   │ ┝━━━━━━━━━┿━━━━━━━━━┥ │ ├─────────┬─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ├─────────┼─────────┤ │ ┝━━━━━━━━━┿━━━━━━━━━┥ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ╰─────────┴─────────╯ │ ├─────────┼─────────┤ │
│                   │                       │ │    _    │    _    │ │
│                   │                       │ ╰─────────┴─────────╯ │
├───────────────────┼───────────────────────┼───────────────────────┤
│  rounded_double   │ ╭─────────┬─────────╮ │ ╭───────────────────╮ │
│                   │ │    _    │    _    │ │ │  rounded_double   │ │
│                   │ ╞═════════╪═════════╡ │ ├─────────┬─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ├─────────┼─────────┤ │ ╞═════════╪═════════╡ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ╰─────────┴─────────╯ │ ├─────────┼─────────┤ │
│                   │                       │ │    _    │    _    │ │
│                   │                       │ ╰─────────┴─────────╯ │
├───────────────────┼───────────────────────┼───────────────────────┤
│       thick       │ ┏━━━━━━━━━┳━━━━━━━━━┓ │ ┏━━━━━━━━━━━━━━━━━━━┓ │
│                   │ ┃    _    ┃    _    ┃ │ ┃       thick       ┃ │
│                   │ ┣━━━━━━━━━╋━━━━━━━━━┫ │ ┣━━━━━━━━━┳━━━━━━━━━┫ │
│                   │ ┃    _    ┃    _    ┃ │ ┃    _    ┃    _    ┃ │
│                   │ ┣━━━━━━━━━╋━━━━━━━━━┫ │ ┣━━━━━━━━━╋━━━━━━━━━┫ │
│                   │ ┃    _    ┃    _    ┃ │ ┃    _    ┃    _    ┃ │
│                   │ ┗━━━━━━━━━┻━━━━━━━━━┛ │ ┣━━━━━━━━━╋━━━━━━━━━┫ │
│                   │                       │ ┃    _    ┃    _    ┃ │
│                   │                       │ ┗━━━━━━━━━┻━━━━━━━━━┛ │
├───────────────────┼───────────────────────┼───────────────────────┤
│    thick_thin     │ ┌─────────┬─────────┐ │ ┌───────────────────┐ │
│                   │ │    _    │    _    │ │ │    thick_thin     │ │
│                   │ ┠━━━━━━━━━╂━━━━━━━━━┨ │ ├─────────┬─────────┤ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ ├─────────┼─────────┤ │ ┠━━━━━━━━━╂━━━━━━━━━┨ │
│                   │ │    _    │    _    │ │ │    _    │    _    │ │
│                   │ └─────────┴─────────┘ │ ├─────────┼─────────┤ │
│                   │                       │ │    _    │    _    │ │
│                   │                       │ └─────────┴─────────┘ │
├───────────────────┼───────────────────────┼───────────────────────┤
│      double       │ ╔═════════╦═════════╗ │ ╔═══════════════════╗ │
│                   │ ║    _    ║    _    ║ │ ║      double       ║ │
│                   │ ╠═════════╬═════════╣ │ ╠═════════╦═════════╣ │
│                   │ ║    _    ║    _    ║ │ ║    _    ║    _    ║ │
│                   │ ╠═════════╬═════════╣ │ ╠═════════╬═════════╣ │
│                   │ ║    _    ║    _    ║ │ ║    _    ║    _    ║ │
│                   │ ╚═════════╩═════════╝ │ ╠═════════╬═════════╣ │
│                   │                       │ ║    _    ║    _    ║ │
│                   │                       │ ╚═════════╩═════════╝ │
├───────────────────┼───────────────────────┼───────────────────────┤
│    double_thin    │ ╔═════════╦═════════╗ │ ╔═══════════════════╗ │
│                   │ ║    _    ║    _    ║ │ ║    double_thin    ║ │
│                   │ ╟─────────╫─────────╢ │ ╠═════════╦═════════╣ │
│                   │ ║    _    ║    _    ║ │ ║    _    ║    _    ║ │
│                   │ ╠═════════╬═════════╣ │ ╟─────────╫─────────╢ │
│                   │ ║    _    ║    _    ║ │ ║    _    ║    _    ║ │
│                   │ ╚═════════╩═════════╝ │ ╠═════════╬═════════╣ │
│                   │                       │ ║    _    ║    _    ║ │
│                   │                       │ ╚═════════╩═════════╝ │
├───────────────────┼───────────────────────┼───────────────────────┤
│     booktabs      │  ───────────────────  │  ───────────────────  │
│                   │      _         _      │       booktabs        │
│                   │  ━━━━━━━━━━━━━━━━━━━  │  ───────────────────  │
│                   │      _         _      │      _         _      │
│                   │  ───────────────────  │  ━━━━━━━━━━━━━━━━━━━  │
│                   │      _         _      │      _         _      │
│                   │  ───────────────────  │  ───────────────────  │
│                   │                       │      _         _      │
│                   │                       │  ───────────────────  │
├───────────────────┼───────────────────────┼───────────────────────┤
│     markdown      │ |    _    |    _    | │ |     markdown      | │
│                   │ |---------|---------| │ |    _    |    _    | │
│                   │ |    _    |    _    | │ |---------|---------| │
│                   │ |    _    |    _    | │ |    _    |    _    | │
│                   │                       │ |    _    |    _    | │
╰───────────────────┴───────────────────────┴───────────────────────╯
```
</details>

<details>
<summary>Example</summary>

```pycon
>>> from table2string import Themes
>>> table_1 = [("1", "2", "3"), ("qwe", "rty\nuio", "")]
>>> name_1 = "Table Name"
>>> print_table(table_1, theme=Themes.ascii_thin)
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> print_table(table_1, theme=Themes.ascii_thin, name=name_1)
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+-----+-----+---+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> print_table(table_1, theme=Themes.ascii_thin_double)
+-----+-----+---+
|   1 |   2 | 3 |
+=====+=====+===+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> print_table(table_1, theme=Themes.ascii_thin_double, name=name_1)
+---------------+
|  Table Name   |
+-----+-----+---+
|   1 |   2 | 3 |
+=====+=====+===+
| qwe | rty |   |
|     | uio |   |
+-----+-----+---+
>>> print_table(table_1, theme=Themes.ascii_double)
+=====+=====+===+
‖   1 ‖   2 ‖ 3 ‖
+=====+=====+===+
‖ qwe ‖ rty ‖   ‖
‖     ‖ uio ‖   ‖
+=====+=====+===+
>>> print_table(table_1, theme=Themes.ascii_double, name=name_1)
+===============+
‖  Table Name   ‖
+=====+=====+===+
‖   1 ‖   2 ‖ 3 ‖
+=====+=====+===+
‖ qwe ‖ rty ‖   ‖
‖     ‖ uio ‖   ‖
+=====+=====+===+
>>> print_table(table_1, theme=Themes.ascii_double_thin)
+=====+=====+===+
‖   1 ‖   2 ‖ 3 ‖
+-----+-----+---+
‖ qwe ‖ rty ‖   ‖
‖     ‖ uio ‖   ‖
+=====+=====+===+
>>> print_table(table_1, theme=Themes.ascii_double_thin, name=name_1)
+===============+
‖  Table Name   ‖
+=====+=====+===+
‖   1 ‖   2 ‖ 3 ‖
+-----+-----+---+
‖ qwe ‖ rty ‖   ‖
‖     ‖ uio ‖   ‖
+=====+=====+===+
>>> print_table(table_1, theme=Themes.ascii_booktabs)
 --------------- 
    1     2   3  
 =============== 
  qwe   rty      
        uio      
 --------------- 
>>> print_table(table_1, theme=Themes.ascii_booktabs, name=name_1)
 --------------- 
   Table Name    
 --------------- 
    1     2   3  
 =============== 
  qwe   rty      
        uio      
 --------------- 
>>> print_table(table_1, theme=Themes.thin)
┌─────┬─────┬───┐
│   1 │   2 │ 3 │
├─────┼─────┼───┤
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.thin, name=name_1)
┌───────────────┐
│  Table Name   │
├─────┬─────┬───┤
│   1 │   2 │ 3 │
├─────┼─────┼───┤
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.thin_thick)
┌─────┬─────┬───┐
│   1 │   2 │ 3 │
┝━━━━━┿━━━━━┿━━━┥
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.thin_thick, name=name_1)
┌───────────────┐
│  Table Name   │
├─────┬─────┬───┤
│   1 │   2 │ 3 │
┝━━━━━┿━━━━━┿━━━┥
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.thin_double)
┌─────┬─────┬───┐
│   1 │   2 │ 3 │
╞═════╪═════╪═══╡
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.thin_double, name=name_1)
┌───────────────┐
│  Table Name   │
├─────┬─────┬───┤
│   1 │   2 │ 3 │
╞═════╪═════╪═══╡
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.rounded)
╭─────┬─────┬───╮
│   1 │   2 │ 3 │
├─────┼─────┼───┤
│ qwe │ rty │   │
│     │ uio │   │
╰─────┴─────┴───╯
>>> print_table(table_1, theme=Themes.rounded, name=name_1)
╭───────────────╮
│  Table Name   │
├─────┬─────┬───┤
│   1 │   2 │ 3 │
├─────┼─────┼───┤
│ qwe │ rty │   │
│     │ uio │   │
╰─────┴─────┴───╯
>>> print_table(table_1, theme=Themes.rounded_thick)
╭─────┬─────┬───╮
│   1 │   2 │ 3 │
┝━━━━━┿━━━━━┿━━━┥
│ qwe │ rty │   │
│     │ uio │   │
╰─────┴─────┴───╯
>>> print_table(table_1, theme=Themes.rounded_thick, name=name_1)
╭───────────────╮
│  Table Name   │
├─────┬─────┬───┤
│   1 │   2 │ 3 │
┝━━━━━┿━━━━━┿━━━┥
│ qwe │ rty │   │
│     │ uio │   │
╰─────┴─────┴───╯
>>> print_table(table_1, theme=Themes.rounded_double)
╭─────┬─────┬───╮
│   1 │   2 │ 3 │
╞═════╪═════╪═══╡
│ qwe │ rty │   │
│     │ uio │   │
╰─────┴─────┴───╯
>>> print_table(table_1, theme=Themes.rounded_double, name=name_1)
╭───────────────╮
│  Table Name   │
├─────┬─────┬───┤
│   1 │   2 │ 3 │
╞═════╪═════╪═══╡
│ qwe │ rty │   │
│     │ uio │   │
╰─────┴─────┴───╯
>>> print_table(table_1, theme=Themes.thick)
┏━━━━━┳━━━━━┳━━━┓
┃   1 ┃   2 ┃ 3 ┃
┣━━━━━╋━━━━━╋━━━┫
┃ qwe ┃ rty ┃   ┃
┃     ┃ uio ┃   ┃
┗━━━━━┻━━━━━┻━━━┛
>>> print_table(table_1, theme=Themes.thick, name=name_1)
┏━━━━━━━━━━━━━━━┓
┃  Table Name   ┃
┣━━━━━┳━━━━━┳━━━┫
┃   1 ┃   2 ┃ 3 ┃
┣━━━━━╋━━━━━╋━━━┫
┃ qwe ┃ rty ┃   ┃
┃     ┃ uio ┃   ┃
┗━━━━━┻━━━━━┻━━━┛
>>> print_table(table_1, theme=Themes.thick_thin)
┌─────┬─────┬───┐
│   1 │   2 │ 3 │
┠━━━━━╂━━━━━╂━━━┨
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.thick_thin, name=name_1)
┌───────────────┐
│  Table Name   │
├─────┬─────┬───┤
│   1 │   2 │ 3 │
┠━━━━━╂━━━━━╂━━━┨
│ qwe │ rty │   │
│     │ uio │   │
└─────┴─────┴───┘
>>> print_table(table_1, theme=Themes.double)
╔═════╦═════╦═══╗
║   1 ║   2 ║ 3 ║
╠═════╬═════╬═══╣
║ qwe ║ rty ║   ║
║     ║ uio ║   ║
╚═════╩═════╩═══╝
>>> print_table(table_1, theme=Themes.double, name=name_1)
╔═══════════════╗
║  Table Name   ║
╠═════╦═════╦═══╣
║   1 ║   2 ║ 3 ║
╠═════╬═════╬═══╣
║ qwe ║ rty ║   ║
║     ║ uio ║   ║
╚═════╩═════╩═══╝
>>> print_table(table_1, theme=Themes.double_thin)
╔═════╦═════╦═══╗
║   1 ║   2 ║ 3 ║
╟─────╫─────╫───╢
║ qwe ║ rty ║   ║
║     ║ uio ║   ║
╚═════╩═════╩═══╝
>>> print_table(table_1, theme=Themes.double_thin, name=name_1)
╔═══════════════╗
║  Table Name   ║
╠═════╦═════╦═══╣
║   1 ║   2 ║ 3 ║
╟─────╫─────╫───╢
║ qwe ║ rty ║   ║
║     ║ uio ║   ║
╚═════╩═════╩═══╝
>>> print_table(table_1, theme=Themes.booktabs)
 ─────────────── 
    1     2   3  
 ━━━━━━━━━━━━━━━ 
  qwe   rty      
        uio      
 ─────────────── 
>>> print_table(table_1, theme=Themes.booktabs, name=name_1)
 ─────────────── 
   Table Name    
 ─────────────── 
    1     2   3  
 ━━━━━━━━━━━━━━━ 
  qwe   rty      
        uio      
 ─────────────── 
>>> print_table(table_1, theme=Themes.markdown)
|   1 |   2 | 3 |
|-----|-----|---|
| qwe | rty |   |
|     | uio |   |
>>> print_table(table_1, theme=Themes.markdown, name=name_1)
|  Table Name   |
|   1 |   2 | 3 |
|-----|-----|---|
| qwe | rty |   |
|     | uio |   |

```

</details>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "table2string",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "string, table, tools",
    "author": null,
    "author_email": "EgorKhabarov <not.a.fan.of.broccoli@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/5a/e6/f9ae87cfd3fa6f7d11085842cdf10a64c628651dfb6fd4b61b3940b71789/table2string-1.3.0.tar.gz",
    "platform": null,
    "description": "# table2string\n\n[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/EgorKhabarov/table2string/tests.yml?style=flat&logo=GitHub&label=Tests)](https://github.com/EgorKhabarov/table2string/actions/workflows/tests.yml)\n[![Publish Python Package to PyPI](https://img.shields.io/github/actions/workflow/status/EgorKhabarov/table2string/publish.yml?style=flat&logo=GitHub&label=Publish%20to%20PyPI)](https://github.com/EgorKhabarov/table2string/actions/workflows/publish.yml)\n\n[![PyPi Package Version](https://img.shields.io/pypi/v/table2string.svg?style=flat&logo=pypi)](https://pypi.python.org/pypi/table2string)\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/table2string.svg?style=flat&logo=pypi)](https://pypi.python.org/pypi/table2string)\n[![PyPi status](https://img.shields.io/pypi/status/table2string.svg?style=flat&logo=pypi)](https://pypi.python.org/pypi/table2string)\n[![PyPi downloads](https://img.shields.io/pypi/dm/table2string.svg?style=flat&logo=pypi)](https://pypi.org/project/table2string/)\n\n## Convert table to string\n\nWhile there are several libraries available for converting tables to strings in Python, none seemed to meet my specific requirements. \n\n- **Line Break Support:** Easily include line breaks within cells for enhanced readability.\n- **Emoji Integration:** Effortlessly incorporate emoji characters into your tables to add visual appeal and context.\n\n---\n\n# Install\n\n## PyPI\n\n```shell\npip install -U table2string\n```\n\n## GitHub\n\n```shell\npip install -U git+https://github.com/EgorKhabarov/table2string.git@master\n```\n\n---\n\n# Usage example\n\n```pycon\n>>> from table2string import print_table, stringify_table\n>>> print_table([(\"1\", \"2\", \"3\"), (\"qwe\", \"rty\\nuio\", \"\")], name=\"Table Name\")\n+---------------+\n|  Table Name   |\n+-----+-----+---+\n|   1 |   2 | 3 |\n+-----+-----+---+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> print(stringify_table([(\"1\", \"2\", \"3\"), (\"qwe\", \"rty\\nuio\", \"\")], name=\"Table Name\"))\n+---------------+\n|  Table Name   |\n+-----+-----+---+\n|   1 |   2 | 3 |\n+-----+-----+---+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> from io import StringIO\n>>> from table2string import Table\n>>> Table.from_csv(StringIO('c1,c2,c3\\n1,2,3\\nqwe,\"rty\\nuio\",'), name=\"Table Name\").print()\n+----------------+\n|   Table Name   |\n+-----+-----+----+\n| c1  | c2  | c3 |\n+-----+-----+----+\n|   1 |   2 |  3 |\n+-----+-----+----+\n| qwe | rty |    |\n|     | uio |    |\n+-----+-----+----+\n>>> Table.from_csv(StringIO('c1,c2,c3\\n1,2,3\\nqwe,\"rty\\nuio\",'), name=\"Table Name\", skip_first_line=True).print()\n+---------------+\n|  Table Name   |\n+-----+-----+---+\n|   1 |   2 | 3 |\n+-----+-----+---+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> import sqlite3\n>>> cursor = sqlite3.connect(\":memory:\").cursor()\n>>> cursor.execute(\n...     \"CREATE TABLE data (c1 TEXT, c2 TEXT, c3 TEXT);\"\n... ).executemany(\n...     \"INSERT INTO data (c1, c2, c3) VALUES (?, ?, ?);\",\n...     [(\"1\", \"2\", \"3\"), (\"qwe\", \"rty\\nuio\", \"\")],\n... ).execute(\n...     \"SELECT c1, c2, c3 FROM data;\"\n... ) and None  # because this method returns a cursor\n>>> Table.from_db_cursor(cursor, name=\"Table Name\").print()\n+---------------+\n|  Table Name   |\n+-----+-----+---+\n|   1 |   2 | 3 |\n+-----+-----+---+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> cursor.execute(\"SELECT c1, c2, c3 FROM data;\") and None\n>>> Table.from_db_cursor(cursor, name=\"Table Name\", column_names=True).print()\n+----------------+\n|   Table Name   |\n+-----+-----+----+\n| c1  | c2  | c3 |\n+-----+-----+----+\n|   1 |   2 |  3 |\n+-----+-----+----+\n| qwe | rty |    |\n|     | uio |    |\n+-----+-----+----+\n\n```\n\n## Custom width and height settings\n\n<details>\n<summary>Example</summary>\n\n```pycon\n>>> # Width of the entire table with borders\n>>> print_table([(1,), (2.345,), (\"example\",)], max_width=10)\n+--------+\n|      1 |\n+--------+\n|  2.345 |\n+--------+\n| exampl\u21a9|\n| e      |\n+--------+\n>>> # Width of each column individually\n>>> print_table([(1,), (2.345,), (\"example\",)], max_width=(10,))\n+------------+\n|          1 |\n+------------+\n|      2.345 |\n+------------+\n| example    |\n+------------+\n>>> print_table([(\"123456\\n\\n789000\", \"example\")], max_width=(3, 4), max_height=4)\n+-----+------+\n| 123\u21a9| exam\u21a9|\n| 456 | ple  |\n|     |      |\n| 789\u2026|      |\n+-----+------+\n>>> print_table([(\"123456789\",)], max_width=(1,), max_height=1)\n+---+\n| 1\u2026|\n+---+\n>>> print_table(\n...     table=[(\"123\\n456\\n789\",)],\n...     max_width=(3,),\n...     max_height=4,\n...     maximize_height=True,\n... )\n+-----+\n| 123 |\n| 456 |\n| 789 |\n|     |\n+-----+\n>>> print_table(\n...     table=[(\"123456789\",)],\n...     max_width=(3,),\n...     max_height=4,\n...     maximize_height=True,\n... )\n+-----+\n| 123\u21a9|\n| 456\u21a9|\n| 789 |\n|     |\n+-----+\n\n```\n</details>\n\n## Text alignment\n\n<details>\n<summary>Example</summary>\n\n```pycon\n>>> kwargs_1 = {\n...     \"table\": [(\"1\", \"123456789\\nqwerty\\nasdfghjklzxcvb\")],\n...     \"name\": \"Table Name\\nName\\nNaaaaame\",\n...     \"max_width\": (5, 15),\n... }\n>>> print_table(**kwargs_1)\n+-------------------------+\n|       Table Name        |\n|          Name           |\n|        Naaaaame         |\n+-------+-----------------+\n|     1 | 123456789       |\n|       | qwerty          |\n|       | asdfghjklzxcvb  |\n+-------+-----------------+\n>>> print_table(**kwargs_1, align=\"*\", name_align=\"*\")  # align=\"**\", name_align=\"**\"\n+-------------------------+\n| Table Name              |\n| Name                    |\n| Naaaaame                |\n+-------+-----------------+\n|     1 | 123456789       |\n|       | qwerty          |\n|       | asdfghjklzxcvb  |\n+-------+-----------------+\n>>> print_table(**kwargs_1, align=\"<\", name_align=\"<\")  # align=\"<<\", name_align=\"<<\"\n+-------------------------+\n| Table Name              |\n| Name                    |\n| Naaaaame                |\n+-------+-----------------+\n| 1     | 123456789       |\n|       | qwerty          |\n|       | asdfghjklzxcvb  |\n+-------+-----------------+\n>>> print_table(**kwargs_1, align=\">\", name_align=\">\")  # align=\">>\", name_align=\">>\"\n+-------------------------+\n|              Table Name |\n|                    Name |\n|                Naaaaame |\n+-------+-----------------+\n|     1 |       123456789 |\n|       |          qwerty |\n|       |  asdfghjklzxcvb |\n+-------+-----------------+\n>>> print_table(**kwargs_1, align=\"^\", name_align=\"^\")  # align=\"^^\", name_align=\"^^\"\n+-------------------------+\n|       Table Name        |\n|          Name           |\n|        Naaaaame         |\n+-------+-----------------+\n|   1   |    123456789    |\n|       |     qwerty      |\n|       | asdfghjklzxcvb  |\n+-------+-----------------+\n>>> print_table(**kwargs_1, align=\"^<\", name_align=\"^<\")\n+-------------------------+\n|       Table Name        |\n|       Name              |\n|       Naaaaame          |\n+-------+-----------------+\n|   1   | 123456789       |\n|       | qwerty          |\n|       | asdfghjklzxcvb  |\n+-------+-----------------+\n>>> print_table(**kwargs_1, align=\"^>\", name_align=\"^>\")\n+-------------------------+\n|       Table Name        |\n|             Name        |\n|         Naaaaame        |\n+-------+-----------------+\n|   1   |      123456789  |\n|       |         qwerty  |\n|       | asdfghjklzxcvb  |\n+-------+-----------------+\n>>> print_table([(\"qwerty\\n123456789\\nasdfghjklzxcvb\",)], max_width=(18,), align=\"^<\")\n+--------------------+\n|   qwerty           |\n|   123456789        |\n|   asdfghjklzxcvb   |\n+--------------------+\n>>> print_table([(\"qwerty\\n123456789\\nasdfghjklzxcvb\",)], max_width=(18,), align=\"^>\")\n+--------------------+\n|           qwerty   |\n|        123456789   |\n|   asdfghjklzxcvb   |\n+--------------------+\n\n```\n</details>\n\n## Separator settings\n\n<details>\n<summary>Example</summary>\n\n```pycon\n>>> table_1 = [(\"qwe\", \"rty\\nuio\"), (\"123456\\n\\n789000\", \"example\")]\n>>> kwargs = {\n...     \"max_width\": (3, 4),\n...     \"max_height\": 4,\n...     \"line_break_symbol\": \"/\",\n...     \"cell_break_symbol\": \"\u2026\",\n... }\n>>> print_table(table_1, **kwargs, sep=True)\n+-----+------+\n| qwe | rty  |\n|     | uio  |\n+-----+------+\n| 123/| exam/|\n| 456 | ple  |\n|     |      |\n| 789\u2026|      |\n+-----+------+\n>>> print_table(table_1, **kwargs, sep=False)\n+-----+------+\n| qwe | rty  |\n|     | uio  |\n| 123/| exam/|\n| 456 | ple  |\n|     |      |\n| 789\u2026|      |\n+-----+------+\n>>> table_2 = [(\"1\", \"2\"), (\"3\", \"4\")]\n>>> print_table(table_2, sep=True, name=\"Name\")\n+-------+\n| Name  |\n+---+---+\n| 1 | 2 |\n+---+---+\n| 3 | 4 |\n+---+---+\n>>> print_table(table_2, sep=False, name=\"Name\")\n+-------+\n| Name  |\n+---+---+\n| 1 | 2 |\n| 3 | 4 |\n+---+---+\n>>> table_3 = [(\"1\", \"2\"), (\"3\", \"4\"), (\"5\", \"6\"), (\"7\", \"8\")]\n>>> print_table(table_3, sep=(1,))\n+---+---+\n| 1 | 2 |\n+---+---+\n| 3 | 4 |\n| 5 | 6 |\n| 7 | 8 |\n+---+---+\n>>> print_table(table_3, sep=(2,))\n+---+---+\n| 1 | 2 |\n| 3 | 4 |\n+---+---+\n| 5 | 6 |\n| 7 | 8 |\n+---+---+\n>>> print_table(table_3, sep=(1, 3))\n+---+---+\n| 1 | 2 |\n+---+---+\n| 3 | 4 |\n| 5 | 6 |\n+---+---+\n| 7 | 8 |\n+---+---+\n>>> print_table(table_3, sep=(1,), name=\"Name\")\n+-------+\n| Name  |\n+---+---+\n| 1 | 2 |\n+---+---+\n| 3 | 4 |\n| 5 | 6 |\n| 7 | 8 |\n+---+---+\n>>> print_table(table_3, sep=(2,), name=\"Name\")\n+-------+\n| Name  |\n+---+---+\n| 1 | 2 |\n| 3 | 4 |\n+---+---+\n| 5 | 6 |\n| 7 | 8 |\n+---+---+\n>>> print_table(table_3, sep=(1, 3), name=\"Name\")\n+-------+\n| Name  |\n+---+---+\n| 1 | 2 |\n+---+---+\n| 3 | 4 |\n| 5 | 6 |\n+---+---+\n| 7 | 8 |\n+---+---+\n\n```\n</details>\n\n## Borders\n\n<details>\n<summary>Border types</summary>\n\n```text\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502    ascii_thin     \u2502 +---------+---------+ \u2502 +-------------------+ \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 |    ascii_thin     | \u2502\n\u2502                   \u2502 +---------+---------+ \u2502 +---------+---------+ \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502 +---------+---------+ \u2502 +---------+---------+ \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502 +---------+---------+ \u2502 +---------+---------+ \u2502\n\u2502                   \u2502                       \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502                       \u2502 +---------+---------+ \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 ascii_thin_double \u2502 +---------+---------+ \u2502 +-------------------+ \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 | ascii_thin_double | \u2502\n\u2502                   \u2502 +=========+=========+ \u2502 +---------+---------+ \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502 +---------+---------+ \u2502 +=========+=========+ \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502 +---------+---------+ \u2502 +---------+---------+ \u2502\n\u2502                   \u2502                       \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502                       \u2502 +---------+---------+ \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502   ascii_double    \u2502 +=========+=========+ \u2502 +===================+ \u2502\n\u2502                   \u2502 \u2016    _    \u2016    _    \u2016 \u2502 \u2016   ascii_double    \u2016 \u2502\n\u2502                   \u2502 +=========+=========+ \u2502 +=========+=========+ \u2502\n\u2502                   \u2502 \u2016    _    \u2016    _    \u2016 \u2502 \u2016    _    \u2016    _    \u2016 \u2502\n\u2502                   \u2502 +=========+=========+ \u2502 +=========+=========+ \u2502\n\u2502                   \u2502 \u2016    _    \u2016    _    \u2016 \u2502 \u2016    _    \u2016    _    \u2016 \u2502\n\u2502                   \u2502 +=========+=========+ \u2502 +=========+=========+ \u2502\n\u2502                   \u2502                       \u2502 \u2016    _    \u2016    _    \u2016 \u2502\n\u2502                   \u2502                       \u2502 +=========+=========+ \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 ascii_double_thin \u2502 +=========+=========+ \u2502 +===================+ \u2502\n\u2502                   \u2502 \u2016    _    \u2016    _    \u2016 \u2502 \u2016 ascii_double_thin \u2016 \u2502\n\u2502                   \u2502 +---------+---------+ \u2502 +=========+=========+ \u2502\n\u2502                   \u2502 \u2016    _    \u2016    _    \u2016 \u2502 \u2016    _    \u2016    _    \u2016 \u2502\n\u2502                   \u2502 +=========+=========+ \u2502 +---------+---------+ \u2502\n\u2502                   \u2502 \u2016    _    \u2016    _    \u2016 \u2502 \u2016    _    \u2016    _    \u2016 \u2502\n\u2502                   \u2502 +=========+=========+ \u2502 +=========+=========+ \u2502\n\u2502                   \u2502                       \u2502 \u2016    _    \u2016    _    \u2016 \u2502\n\u2502                   \u2502                       \u2502 +=========+=========+ \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502  ascii_booktabs   \u2502  -------------------  \u2502  -------------------  \u2502\n\u2502                   \u2502      _         _      \u2502    ascii_booktabs     \u2502\n\u2502                   \u2502  ===================  \u2502  -------------------  \u2502\n\u2502                   \u2502      _         _      \u2502      _         _      \u2502\n\u2502                   \u2502  -------------------  \u2502  ===================  \u2502\n\u2502                   \u2502      _         _      \u2502      _         _      \u2502\n\u2502                   \u2502  -------------------  \u2502  -------------------  \u2502\n\u2502                   \u2502                       \u2502      _         _      \u2502\n\u2502                   \u2502                       \u2502  -------------------  \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502       thin        \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502       thin        \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502                       \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502                       \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502    thin_thick     \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    thin_thick     \u2502 \u2502\n\u2502                   \u2502 \u251d\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2525 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u251d\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2525 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502                       \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502                       \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502    thin_double    \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    thin_double    \u2502 \u2502\n\u2502                   \u2502 \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502                       \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502                       \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502      rounded      \u2502 \u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e \u2502 \u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502      rounded      \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502                       \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502                       \u2502 \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502   rounded_thick   \u2502 \u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e \u2502 \u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502   rounded_thick   \u2502 \u2502\n\u2502                   \u2502 \u251d\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2525 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u251d\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2525 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502                       \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502                       \u2502 \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502  rounded_double   \u2502 \u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e \u2502 \u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502  rounded_double   \u2502 \u2502\n\u2502                   \u2502 \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502                       \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502                       \u2502 \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502       thick       \u2502 \u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513 \u2502 \u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513 \u2502\n\u2502                   \u2502 \u2503    _    \u2503    _    \u2503 \u2502 \u2503       thick       \u2503 \u2502\n\u2502                   \u2502 \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252b \u2502 \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252b \u2502\n\u2502                   \u2502 \u2503    _    \u2503    _    \u2503 \u2502 \u2503    _    \u2503    _    \u2503 \u2502\n\u2502                   \u2502 \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252b \u2502 \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252b \u2502\n\u2502                   \u2502 \u2503    _    \u2503    _    \u2503 \u2502 \u2503    _    \u2503    _    \u2503 \u2502\n\u2502                   \u2502 \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251b \u2502 \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252b \u2502\n\u2502                   \u2502                       \u2502 \u2503    _    \u2503    _    \u2503 \u2502\n\u2502                   \u2502                       \u2502 \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251b \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502    thick_thin     \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    thick_thin     \u2502 \u2502\n\u2502                   \u2502 \u2520\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2542\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2528 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 \u2520\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2542\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2528 \u2502\n\u2502                   \u2502 \u2502    _    \u2502    _    \u2502 \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502\n\u2502                   \u2502                       \u2502 \u2502    _    \u2502    _    \u2502 \u2502\n\u2502                   \u2502                       \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502      double       \u2502 \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557 \u2502 \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557 \u2502\n\u2502                   \u2502 \u2551    _    \u2551    _    \u2551 \u2502 \u2551      double       \u2551 \u2502\n\u2502                   \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502\n\u2502                   \u2502 \u2551    _    \u2551    _    \u2551 \u2502 \u2551    _    \u2551    _    \u2551 \u2502\n\u2502                   \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502\n\u2502                   \u2502 \u2551    _    \u2551    _    \u2551 \u2502 \u2551    _    \u2551    _    \u2551 \u2502\n\u2502                   \u2502 \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502\n\u2502                   \u2502                       \u2502 \u2551    _    \u2551    _    \u2551 \u2502\n\u2502                   \u2502                       \u2502 \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502    double_thin    \u2502 \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557 \u2502 \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557 \u2502\n\u2502                   \u2502 \u2551    _    \u2551    _    \u2551 \u2502 \u2551    double_thin    \u2551 \u2502\n\u2502                   \u2502 \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256b\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562 \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502\n\u2502                   \u2502 \u2551    _    \u2551    _    \u2551 \u2502 \u2551    _    \u2551    _    \u2551 \u2502\n\u2502                   \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502 \u255f\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256b\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2562 \u2502\n\u2502                   \u2502 \u2551    _    \u2551    _    \u2551 \u2502 \u2551    _    \u2551    _    \u2551 \u2502\n\u2502                   \u2502 \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502\n\u2502                   \u2502                       \u2502 \u2551    _    \u2551    _    \u2551 \u2502\n\u2502                   \u2502                       \u2502 \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502     booktabs      \u2502  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500  \u2502  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500  \u2502\n\u2502                   \u2502      _         _      \u2502       booktabs        \u2502\n\u2502                   \u2502  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501  \u2502  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500  \u2502\n\u2502                   \u2502      _         _      \u2502      _         _      \u2502\n\u2502                   \u2502  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500  \u2502  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501  \u2502\n\u2502                   \u2502      _         _      \u2502      _         _      \u2502\n\u2502                   \u2502  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500  \u2502  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500  \u2502\n\u2502                   \u2502                       \u2502      _         _      \u2502\n\u2502                   \u2502                       \u2502  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500  \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502     markdown      \u2502 |    _    |    _    | \u2502 |     markdown      | \u2502\n\u2502                   \u2502 |---------|---------| \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 |---------|---------| \u2502\n\u2502                   \u2502 |    _    |    _    | \u2502 |    _    |    _    | \u2502\n\u2502                   \u2502                       \u2502 |    _    |    _    | \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n</details>\n\n<details>\n<summary>Example</summary>\n\n```pycon\n>>> from table2string import Themes\n>>> table_1 = [(\"1\", \"2\", \"3\"), (\"qwe\", \"rty\\nuio\", \"\")]\n>>> name_1 = \"Table Name\"\n>>> print_table(table_1, theme=Themes.ascii_thin)\n+-----+-----+---+\n|   1 |   2 | 3 |\n+-----+-----+---+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> print_table(table_1, theme=Themes.ascii_thin, name=name_1)\n+---------------+\n|  Table Name   |\n+-----+-----+---+\n|   1 |   2 | 3 |\n+-----+-----+---+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> print_table(table_1, theme=Themes.ascii_thin_double)\n+-----+-----+---+\n|   1 |   2 | 3 |\n+=====+=====+===+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> print_table(table_1, theme=Themes.ascii_thin_double, name=name_1)\n+---------------+\n|  Table Name   |\n+-----+-----+---+\n|   1 |   2 | 3 |\n+=====+=====+===+\n| qwe | rty |   |\n|     | uio |   |\n+-----+-----+---+\n>>> print_table(table_1, theme=Themes.ascii_double)\n+=====+=====+===+\n\u2016   1 \u2016   2 \u2016 3 \u2016\n+=====+=====+===+\n\u2016 qwe \u2016 rty \u2016   \u2016\n\u2016     \u2016 uio \u2016   \u2016\n+=====+=====+===+\n>>> print_table(table_1, theme=Themes.ascii_double, name=name_1)\n+===============+\n\u2016  Table Name   \u2016\n+=====+=====+===+\n\u2016   1 \u2016   2 \u2016 3 \u2016\n+=====+=====+===+\n\u2016 qwe \u2016 rty \u2016   \u2016\n\u2016     \u2016 uio \u2016   \u2016\n+=====+=====+===+\n>>> print_table(table_1, theme=Themes.ascii_double_thin)\n+=====+=====+===+\n\u2016   1 \u2016   2 \u2016 3 \u2016\n+-----+-----+---+\n\u2016 qwe \u2016 rty \u2016   \u2016\n\u2016     \u2016 uio \u2016   \u2016\n+=====+=====+===+\n>>> print_table(table_1, theme=Themes.ascii_double_thin, name=name_1)\n+===============+\n\u2016  Table Name   \u2016\n+=====+=====+===+\n\u2016   1 \u2016   2 \u2016 3 \u2016\n+-----+-----+---+\n\u2016 qwe \u2016 rty \u2016   \u2016\n\u2016     \u2016 uio \u2016   \u2016\n+=====+=====+===+\n>>> print_table(table_1, theme=Themes.ascii_booktabs)\n --------------- \n    1     2   3  \n =============== \n  qwe   rty      \n        uio      \n --------------- \n>>> print_table(table_1, theme=Themes.ascii_booktabs, name=name_1)\n --------------- \n   Table Name    \n --------------- \n    1     2   3  \n =============== \n  qwe   rty      \n        uio      \n --------------- \n>>> print_table(table_1, theme=Themes.thin)\n\u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2524\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.thin, name=name_1)\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502  Table Name   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2524\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2524\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.thin_thick)\n\u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251d\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2525\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.thin_thick, name=name_1)\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502  Table Name   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2524\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251d\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2525\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.thin_double)\n\u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2561\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.thin_double, name=name_1)\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502  Table Name   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2524\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2561\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.rounded)\n\u256d\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u256e\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2524\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u256f\n>>> print_table(table_1, theme=Themes.rounded, name=name_1)\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502  Table Name   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2524\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2524\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u256f\n>>> print_table(table_1, theme=Themes.rounded_thick)\n\u256d\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u256e\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251d\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2525\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u256f\n>>> print_table(table_1, theme=Themes.rounded_thick, name=name_1)\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502  Table Name   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2524\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u251d\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2501\u2501\u253f\u2501\u2501\u2501\u2525\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u256f\n>>> print_table(table_1, theme=Themes.rounded_double)\n\u256d\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u256e\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2561\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u256f\n>>> print_table(table_1, theme=Themes.rounded_double, name=name_1)\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502  Table Name   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2524\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2561\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u256f\n>>> print_table(table_1, theme=Themes.thick)\n\u250f\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2513\n\u2503   1 \u2503   2 \u2503 3 \u2503\n\u2523\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u252b\n\u2503 qwe \u2503 rty \u2503   \u2503\n\u2503     \u2503 uio \u2503   \u2503\n\u2517\u2501\u2501\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u251b\n>>> print_table(table_1, theme=Themes.thick, name=name_1)\n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503  Table Name   \u2503\n\u2523\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u252b\n\u2503   1 \u2503   2 \u2503 3 \u2503\n\u2523\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u2501\u2501\u254b\u2501\u2501\u2501\u252b\n\u2503 qwe \u2503 rty \u2503   \u2503\n\u2503     \u2503 uio \u2503   \u2503\n\u2517\u2501\u2501\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u251b\n>>> print_table(table_1, theme=Themes.thick_thin)\n\u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u2520\u2501\u2501\u2501\u2501\u2501\u2542\u2501\u2501\u2501\u2501\u2501\u2542\u2501\u2501\u2501\u2528\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.thick_thin, name=name_1)\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502  Table Name   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2524\n\u2502   1 \u2502   2 \u2502 3 \u2502\n\u2520\u2501\u2501\u2501\u2501\u2501\u2542\u2501\u2501\u2501\u2501\u2501\u2542\u2501\u2501\u2501\u2528\n\u2502 qwe \u2502 rty \u2502   \u2502\n\u2502     \u2502 uio \u2502   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n>>> print_table(table_1, theme=Themes.double)\n\u2554\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2557\n\u2551   1 \u2551   2 \u2551 3 \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2563\n\u2551 qwe \u2551 rty \u2551   \u2551\n\u2551     \u2551 uio \u2551   \u2551\n\u255a\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u255d\n>>> print_table(table_1, theme=Themes.double, name=name_1)\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551  Table Name   \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2563\n\u2551   1 \u2551   2 \u2551 3 \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2550\u2550\u256c\u2550\u2550\u2550\u2563\n\u2551 qwe \u2551 rty \u2551   \u2551\n\u2551     \u2551 uio \u2551   \u2551\n\u255a\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u255d\n>>> print_table(table_1, theme=Themes.double_thin)\n\u2554\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2557\n\u2551   1 \u2551   2 \u2551 3 \u2551\n\u255f\u2500\u2500\u2500\u2500\u2500\u256b\u2500\u2500\u2500\u2500\u2500\u256b\u2500\u2500\u2500\u2562\n\u2551 qwe \u2551 rty \u2551   \u2551\n\u2551     \u2551 uio \u2551   \u2551\n\u255a\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u255d\n>>> print_table(table_1, theme=Themes.double_thin, name=name_1)\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551  Table Name   \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u2550\u2550\u2563\n\u2551   1 \u2551   2 \u2551 3 \u2551\n\u255f\u2500\u2500\u2500\u2500\u2500\u256b\u2500\u2500\u2500\u2500\u2500\u256b\u2500\u2500\u2500\u2562\n\u2551 qwe \u2551 rty \u2551   \u2551\n\u2551     \u2551 uio \u2551   \u2551\n\u255a\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u2550\u2550\u2569\u2550\u2550\u2550\u255d\n>>> print_table(table_1, theme=Themes.booktabs)\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n    1     2   3  \n \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 \n  qwe   rty      \n        uio      \n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n>>> print_table(table_1, theme=Themes.booktabs, name=name_1)\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n   Table Name    \n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n    1     2   3  \n \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 \n  qwe   rty      \n        uio      \n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n>>> print_table(table_1, theme=Themes.markdown)\n|   1 |   2 | 3 |\n|-----|-----|---|\n| qwe | rty |   |\n|     | uio |   |\n>>> print_table(table_1, theme=Themes.markdown, name=name_1)\n|  Table Name   |\n|   1 |   2 | 3 |\n|-----|-----|---|\n| qwe | rty |   |\n|     | uio |   |\n\n```\n\n</details>\n",
    "bugtrack_url": null,
    "license": "GPL2",
    "summary": "A library to convert tables to string with full support for line breaks and formatting",
    "version": "1.3.0",
    "project_urls": {
        "Documentation": "https://github.com/EgorKhabarov/table2string",
        "Homepage": "https://github.com/EgorKhabarov/table2string",
        "Issues": "https://github.com/EgorKhabarov/table2string/issues",
        "Repository": "https://github.com/EgorKhabarov/table2string"
    },
    "split_keywords": [
        "string",
        " table",
        " tools"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f093768ea93f117a7b0614103ad209c3d155aec6708ff99c499ed2749bb698b",
                "md5": "903e3f99da10dc2358111afe2f0f1625",
                "sha256": "ffcc7957d5cf2ee9be58d11da4973eb0ef09a0959e5bb6937f2b4fdd31e02fb7"
            },
            "downloads": -1,
            "filename": "table2string-1.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "903e3f99da10dc2358111afe2f0f1625",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 17718,
            "upload_time": "2024-06-07T19:04:48",
            "upload_time_iso_8601": "2024-06-07T19:04:48.622014Z",
            "url": "https://files.pythonhosted.org/packages/9f/09/3768ea93f117a7b0614103ad209c3d155aec6708ff99c499ed2749bb698b/table2string-1.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5ae6f9ae87cfd3fa6f7d11085842cdf10a64c628651dfb6fd4b61b3940b71789",
                "md5": "9d6d6d57f2777ffc3f2bf95723ca2e9f",
                "sha256": "2a64b6c575ef7d32c0bdc4b67d69c894e9b27b7f1109e29bc1bee02329533b92"
            },
            "downloads": -1,
            "filename": "table2string-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "9d6d6d57f2777ffc3f2bf95723ca2e9f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 24279,
            "upload_time": "2024-06-07T19:04:49",
            "upload_time_iso_8601": "2024-06-07T19:04:49.881982Z",
            "url": "https://files.pythonhosted.org/packages/5a/e6/f9ae87cfd3fa6f7d11085842cdf10a64c628651dfb6fd4b61b3940b71789/table2string-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-07 19:04:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "EgorKhabarov",
    "github_project": "table2string",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "table2string"
}
        
Elapsed time: 0.25532s