Name | table2string JSON |
Version |
1.3.0
JSON |
| download |
home_page | None |
Summary | A library to convert tables to string with full support for line breaks and formatting |
upload_time | 2024-06-07 19:04:49 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | GPL2 |
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"
}