Skip to main content

pytablewriter is a Python library to write a table in various formats: CSV / Elasticsearch / HTML / JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / MediaWiki / NumPy / Excel / Pandas / Python / reStructuredText / SQLite / TOML / TSV / YAML.

Project description

.. contents:: **pytablewriter**
:backlinks: top
:depth: 2

Summary
=========
`pytablewriter <https://github.com/thombashi/pytablewriter>`__ is a Python library to write a table in various formats: CSV / Elasticsearch / HTML / JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / MediaWiki / NumPy / Excel / Pandas / Python / reStructuredText / SQLite / TOML / TSV / YAML.

.. image:: https://badge.fury.io/py/pytablewriter.svg
:target: https://badge.fury.io/py/pytablewriter
:alt: PyPI package version

.. image:: https://anaconda.org/conda-forge/pytablewriter/badges/version.svg
:target: https://anaconda.org/conda-forge/pytablewriter
:alt: conda-forge package version

.. image:: https://img.shields.io/pypi/pyversions/pytablewriter.svg
:target: https://pypi.org/project/pytablewriter/
:alt: Supported Python versions

.. image:: https://img.shields.io/pypi/implementation/pytablewriter.svg
:target: https://pypi.org/project/pytablewriter
:alt: Supported Python implementations

.. image:: https://img.shields.io/travis/thombashi/pytablewriter/master.svg?label=Linux/macOS%20CI
:target: https://travis-ci.org/thombashi/pytablewriter
:alt: Linux/macOS CI status

.. image:: https://img.shields.io/appveyor/ci/thombashi/pytablewriter/master.svg?label=Windows%20CI
:target: https://ci.appveyor.com/project/thombashi/pytablewriter
:alt: Windows CI status

.. image:: https://coveralls.io/repos/github/thombashi/pytablewriter/badge.svg?branch=master
:target: https://coveralls.io/github/thombashi/pytablewriter?branch=master
:alt: Test coverage

Features
--------
- Write a table in various formats:
- Text formats:
- CSV / Tab-separated values (TSV)
- HTML / CSS
- JSON / `Line-delimited JSON(LDJSON) <https://en.wikipedia.org/wiki/JSON_streaming#Line-delimited_JSON>`__
- `Labeled Tab-separated Values (LTSV) <http://ltsv.org/>`__
- LaTeX: ``tabular``/``array`` environment
- Markdown: GitHub Flavored Markdown (GFM), etc.
- MediaWiki
- reStructuredText: `Grid Tables <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#grid-tables>`__/`Simple Tables <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#simple-tables>`__/`CSV Table <http://docutils.sourceforge.net/docs/ref/rst/directives.html#id4>`__
- Source code (definition of a variable that represents tabular data)
- JavaScript / `NumPy <https://www.numpy.org/>`__ (`numpy.array <https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html>`__) / `Pandas <https://pandas.pydata.org/>`__ (`pandas.DataFrame <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html>`__) / Python
- Space aligned values
- `TOML <https://github.com/toml-lang/toml>`__
- `YAML <https://yaml.org/>`__
- Unicode
- Binary file formats:
- Microsoft Excel :superscript:`TM` (``.xlsx``/``.xls`` file format)
- `pandas.DataFrame <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html>`__ pickle file
- SQLite database
- Application specific formats:
- `Elasticsearch <https://www.elastic.co/products/elasticsearch>`__
- Automatic table cell formatting:
- Alignment
- Padding
- Decimal places of numbers
- Customize table cell styles:
- Text/Background color
- Text alignment
- Font size/weight
- Thousand separator for numbers: e.g. ``1,000``/``1 000``
- Configure output:
- Write table to a stream such as a file/standard-output/string-buffer/Jupyter-Notebook
- Get rendered tabular text
- Data sources:
- nested list
- CSV
- `pandas.DataFrame <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html>`__ / `pandas.Series <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html>`__
- etc.
- Multibyte character support
- ANSI color support

Installation
============

Installation: pip
------------------------------
::

pip install pytablewriter

Some of the formats require additional dependency packages, you can install these packages as follows:

.. csv-table:: Installation of optional dependencies
:header: Installation example, Remark

``pip install pytablewriter[es]``, Elasticsearch
``pip install pytablewriter[excel]``, Excel
``pip install pytablewriter[html]``, HTML
``pip install pytablewriter[sqlite]``, SQLite
``pip install pytablewriter[toml]``, TOML
``pip install pytablewriter[theme]``, Theme plugins
``pip install pytablewriter[all]``, Install all of the optioanal dependencies

Installation: conda
------------------------------
::

conda install -c conda-forge pytablewriter

Installation: apt
------------------------------
::

sudo add-apt-repository ppa:thombashi/ppa
sudo apt update
sudo apt install python3-pytablewriter

Examples
==========
Write tables
--------------
Write a Markdown table
~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python

from pytablewriter import MarkdownTableWriter

def main():
writer = MarkdownTableWriter(
table_name="example_table",
headers=["int", "float", "str", "bool", "mix", "time"],
value_matrix=[
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
],
)
writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

# example_table
|int|float|str |bool | mix | time |
|--:|----:|----|-----|-------:|------------------------|
| 0| 0.10|hoge|True | 0|2017-01-01 03:04:05+0900|
| 2|-2.23|foo |False| |2017-12-23 12:34:51+0900|
| 3| 0.00|bar |True |Infinity|2017-03-03 22:44:55+0900|
|-10|-9.90| |False| NaN|2017-01-01 00:00:00+0900|

:Rendering Result:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/docs/pages/examples/table_format/text/ss/markdown.png
:scale: 80%
:alt: https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/table_format/text/ss/markdown.png

Rendered markdown at GitHub

Write a Markdown table with a margin
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:Sample Code:
.. code-block:: python

from pytablewriter import MarkdownTableWriter

def main():
writer = MarkdownTableWriter(
table_name="write example with a margin",
headers=["int", "float", "str", "bool", "mix", "time"],
value_matrix=[
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
],
margin=1 # add a whitespace for both sides of each cell
)
writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

# write example with a margin
| int | float | str | bool | mix | time |
|----:|------:|------|-------|---------:|--------------------------|
| 0 | 0.10 | hoge | True | 0 | 2017-01-01 03:04:05+0900 |
| 2 | -2.23 | foo | False | | 2017-12-23 12:34:51+0900 |
| 3 | 0.00 | bar | True | Infinity | 2017-03-03 22:44:55+0900 |
| -10 | -9.90 | | False | NaN | 2017-01-01 00:00:00+0900 |

``margin`` attribute can be available for all of the text format writer classes.

Write a table to an Excel sheet
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python

from pytablewriter import ExcelXlsxTableWriter

def main():
writer = ExcelXlsxTableWriter()
writer.table_name = "example"
writer.headers = ["int", "float", "str", "bool", "mix", "time"]
writer.value_matrix = [
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 12:34:51+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 22:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
]
writer.dump("sample.xlsx")

if __name__ == "__main__":
main()

:Output:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/docs/pages/examples/table_format/binary/spreadsheet/ss/excel_single.png
:scale: 100%
:alt: https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/table_format/binary/spreadsheet/ss/excel_single.png

Output excel file (``sample_single.xlsx``)

Write a Unicode table
~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python

from pytablewriter import UnicodeTableWriter

def main():
writer = UnicodeTableWriter()
writer.table_name = "example_table"
writer.headers = ["int", "float", "str", "bool", "mix", "time"]
writer.value_matrix = [
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
]

writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

┌───┬─────┬────┬─────┬────────┬────────────────────────┐
│int│float│str │bool │ mix │ time │
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│ 0│ 0.10│hoge│True │ 0│2017-01-01 03:04:05+0900│
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│ 2│-2.23│foo │False│ │2017-12-23 12:34:51+0900│
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│ 3│ 0.00│bar │True │Infinity│2017-03-03 22:44:55+0900│
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│-10│-9.90│ │False│ NaN│2017-01-01 00:00:00+0900│
└───┴─────┴────┴─────┴────────┴────────────────────────┘

Write a table with JavaScript format (as a nested list variable definition)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python

import pytablewriter

def main():
writer = pytablewriter.JavaScriptTableWriter()
writer.table_name = "example_table"
writer.headers = ["int", "float", "str", "bool", "mix", "time"]
writer.value_matrix = [
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
]

writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block:: js

const example_table = [
["int", "float", "str", "bool", "mix", "time"],
[0, 0.10, "hoge", true, 0, "2017-01-01 03:04:05+0900"],
[2, -2.23, "foo", false, null, "2017-12-23 12:34:51+0900"],
[3, 0.00, "bar", true, Infinity, "2017-03-03 22:44:55+0900"],
[-10, -9.90, "", false, NaN, "2017-01-01 00:00:00+0900"]
];

Write a Markdown table from ``pandas.DataFrame`` instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``from_dataframe`` method of writer classes will set up tabular data from ``pandas.DataFrame``:

:Sample Code:
.. code-block:: python

from textwrap import dedent
import pandas as pd
import io
from pytablewriter import MarkdownTableWriter

def main():
csv_data = io.StringIO(dedent("""\
"i","f","c","if","ifc","bool","inf","nan","mix_num","time"
1,1.10,"aa",1.0,"1",True,Infinity,NaN,1,"2017-01-01 00:00:00+09:00"
2,2.20,"bbb",2.2,"2.2",False,Infinity,NaN,Infinity,"2017-01-02 03:04:05+09:00"
3,3.33,"cccc",-3.0,"ccc",True,Infinity,NaN,NaN,"2017-01-01 00:00:00+09:00"
"""))
df = pd.read_csv(csv_data, sep=',')

writer = MarkdownTableWriter()
writer.from_dataframe(df)
writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

| i | f | c | if |ifc|bool | inf |nan|mix_num | time |
|--:|---:|----|---:|---|-----|--------|---|-------:|-------------------------|
| 1|1.10|aa | 1.0| 1|True |Infinity|NaN| 1|2017-01-01 00:00:00+09:00|
| 2|2.20|bbb | 2.2|2.2|False|Infinity|NaN|Infinity|2017-01-02 03:04:05+09:00|
| 3|3.33|cccc|-3.0|ccc|True |Infinity|NaN| NaN|2017-01-01 00:00:00+09:00|


Adding a column of the DataFrame index if you specify ``add_index_column=True``:

:Sample Code:
.. code-block:: python

import pandas as pd
from pytablewriter import MarkdownTableWriter

def main():
writer = MarkdownTableWriter()
writer.table_name = "add_index_column"
writer.from_dataframe(
pd.DataFrame({"A": [1, 2], "B": [10, 11]}, index=["a", "b"]),
add_index_column=True,
)
writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

# add_index_column
| | A | B |
|---|--:|--:|
|a | 1| 10|
|b | 2| 11|

Write a markdown table from a space-separated values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python

from textwrap import dedent
import pytablewriter

def main():
writer = pytablewriter.MarkdownTableWriter()
writer.table_name = "ps"
writer.from_csv(
dedent("""\
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 77664 8784 ? Ss May11 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S May11 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< May11 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? I< May11 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S May11 0:01 [ksoftirqd/0]
"""),
delimiter=" ")
writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

# ps
|USER|PID|%CPU|%MEM| VSZ |RSS |TTY|STAT|START|TIME| COMMAND |
|----|--:|---:|---:|----:|---:|---|----|-----|----|--------------|
|root| 1| 0| 0.4|77664|8784|? |Ss |May11|0:02|/sbin/init |
|root| 2| 0| 0.0| 0| 0|? |S |May11|0:00|[kthreadd] |
|root| 4| 0| 0.0| 0| 0|? |I< |May11|0:00|[kworker/0:0H]|
|root| 6| 0| 0.0| 0| 0|? |I< |May11|0:00|[mm_percpu_wq]|
|root| 7| 0| 0.0| 0| 0|? |S |May11|0:01|[ksoftirqd/0] |

Get rendered tabular text as str
----------------------------------
``dumps`` method returns rendered tabular text.
``dumps`` only available for text format writers.

:Sample Code:
.. code-block:: python

import pytablewriter

def main():
writer = pytablewriter.MarkdownTableWriter()
writer.headers = ["int", "float", "str", "bool", "mix", "time"]
writer.value_matrix = [
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
]

print(writer.dumps())

if __name__ == "__main__":
main()

:Output:
.. code-block::

|int|float|str |bool | mix | time |
|--:|----:|----|-----|-------:|------------------------|
| 0| 0.10|hoge|True | 0|2017-01-01 03:04:05+0900|
| 2|-2.23|foo |False| |2017-12-23 45:01:23+0900|
| 3| 0.00|bar |True |Infinity|2017-03-03 33:44:55+0900|
|-10|-9.90| |False| NaN|2017-01-01 00:00:00+0900|

Configure table styles
------------------------
Column styles
~~~~~~~~~~~~~~~
Writers can specify
`Style <https://pytablewriter.rtfd.io/en/latest/pages/reference/style.html>`__
for each column by ``column_styles`` attribute of writer classes.

:Sample Code:
.. code-block:: python

from pytablewriter import MarkdownTableWriter
from pytablewriter.style import Style

def main():
writer = MarkdownTableWriter()
writer.table_name = "set style by column_styles"
writer.headers = [
"auto align",
"left align",
"center align",
"bold",
"italic",
"bold italic ts",
]
writer.value_matrix = [
[11, 11, 11, 11, 11, 11],
[1234, 1234, 1234, 1234, 1234, 1234],
]

# specify styles for each column
writer.column_styles = [
Style(),
Style(align="left"),
Style(align="center"),
Style(font_weight="bold"),
Style(font_style="italic"),
Style(font_weight="bold", font_style="italic", thousand_separator=","),
]

writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

# set style by styles
|auto align|left align|center align| bold |italic|bold italic ts|
|---------:|----------|:----------:|-------:|-----:|-------------:|
| 11|11 | 11 | **11**| _11_| _**11**_|
| 1234|1234 | 1234 |**1234**|_1234_| _**1,234**_|

`Rendering result <https://github.com/thombashi/pytablewriter/tree/master/docs/pages/examples/style/output.md>`__


You can also set ``Style`` to a specific column with index or header by using ``set_style`` method:

:Sample Code:
.. code-block:: python

from pytablewriter import MarkdownTableWriter
from pytablewriter.style import Style

def main():
writer = MarkdownTableWriter()
writer.headers = ["A", "B", "C",]
writer.value_matrix = [[11, 11, 11], [1234, 1234, 1234]]

writer.table_name = "set style by column index"
writer.set_style(1, Style(align="center", font_weight="bold"))
writer.set_style(2, Style(thousand_separator=" "))
writer.write_table()
writer.write_null_line()

writer.table_name = "set style by header"
writer.set_style("B", Style(font_style="italic"))
writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. code-block::

# set style by column index
| A | B | C |
|---:|:------:|----:|
| 11| **11** | 11|
|1234|**1234**|1 234|

# set style by header
| A | B | C |
|---:|-----:|----:|
| 11| _11_| 11|
|1234|_1234_|1 234|

Style filter
~~~~~~~~~~~~~~
``set_theme`` method can set predefined style filters.
The following command will install themes:

::

pip install pytablewriter[theme]

``altrow`` theme will colored rows alternatively:

:Sample Code:
.. code-block:: python

writer = TableWriterFactory.create_from_format_name("markdown")
writer.headers = ["INT", "STR"]
writer.value_matrix = [[1, "hoge"], [2, "foo"], [3, "bar"]]
writer.margin = 1

writer.set_theme("altrow")

writer.write_table()

:Output:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter-altrow-theme@master/ss/ptw-altrow-theme_example_default.png
:scale: 100%
:alt: https://github.com/thombashi/pytablewriter-altrow-theme/blob/master/ss/ptw-altrow-theme_example_default.png

Make tables for specific applications
---------------------------------------
Render a table on Jupyter Notebook
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://nbviewer.jupyter.org/github/thombashi/pytablewriter/blob/master/examples/ipynb/jupyter_notebook_example.ipynb

.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/docs/pages/examples/jupyter_notebook/ss/jupyter_notebook.png
:scale: 100%
:alt: https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/jupyter_notebook/ss/jupyter_notebook.png

Table formatting for Jupyter Notebook

Multibyte character support
-----------------------------
Write a table using multibyte character
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can use multibyte characters as table data.
Multibyte characters also properly padded and aligned.

:Sample Code:
.. code-block:: python

import pytablewriter

def main():
writer = pytablewriter.RstSimpleTableWriter()
writer.table_name = "生成に関するパターン"
writer.headers = ["パターン名", "概要", "GoF", "Code Complete[1]"]
writer.value_matrix = [
["Abstract Factory", "関連する一連のインスタンスを状況に応じて、適切に生成する方法を提供する。", "Yes", "Yes"],
["Builder", "複合化されたインスタンスの生成過程を隠蔽する。", "Yes", "No"],
["Factory Method", "実際に生成されるインスタンスに依存しない、インスタンスの生成方法を提供する。", "Yes", "Yes"],
["Prototype", "同様のインスタンスを生成するために、原型のインスタンスを複製する。", "Yes", "No"],
["Singleton", "あるクラスについて、インスタンスが単一であることを保証する。", "Yes", "Yes"],
]
writer.write_table()

if __name__ == "__main__":
main()

:Output:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/docs/pages/examples/multibyte/ss/multi_byte_char.png
:scale: 100%
:alt: https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/multibyte/ss/multi_byte_char.png

Output of multi-byte character table

Multi processing
------------------
You can increase the number of workers to process table data via ``max_workers`` attribute of a writer.
The more ``max_workers`` the less processing time when tabular data is large and the execution environment has available cores.

if you increase ``max_workers`` larger than one, recommend to use main guarded as follows to avoid problemes caused by multi processing:

.. code-block:: python

from multiprocessing import cpu_count
import pytablewriter as ptw

def main():
writer = ptw.MarkdownTableWriter()
writer.max_workers = cpu_count()
...

if __name__ == "__main__":
main()

For more information
----------------------
More examples are available at
https://pytablewriter.rtfd.io/en/latest/pages/examples/index.html

Dependencies
============
- Python 3.5+
- `Python package dependencies (automatically installed) <https://github.com/thombashi/pytablewriter/network/dependencies>`__


Optional dependencies
---------------------
- ``logging`` extras
- `loguru <https://github.com/Delgan/loguru>`__: Used for logging if the package installed
- ``from`` extras
- `pytablereader <https://github.com/thombashi/pytablereader>`__
- ``es`` extra
- `elasticsearch <https://github.com/elastic/elasticsearch-py>`__
- ``excel`` extras
- `xlwt <http://www.python-excel.org/>`__
- `XlsxWriter <https://github.com/jmcnamara/XlsxWriter>`__
- ``html`` extras
- `dominate <https://github.com/Knio/dominate/>`__
- ``sqlite`` extras
- `SimpleSQLite <https://github.com/thombashi/SimpleSQLite>`__
- ``theme`` extras
- `pytablewriter-altrow-theme <https://github.com/thombashi/pytablewriter-altrow-theme>`__
- ``toml`` extras
- `toml <https://github.com/uiri/toml>`__

Documentation
===============
https://pytablewriter.rtfd.io/

Projects using pytablewriter
==================================
- `pytest-md-report <https://github.com/thombashi/pytest-md-report>`__


Related Projects
==================================
- `pytablereader <https://github.com/thombashi/pytablereader>`__
- Tabular data loaded by ``pytablereader`` can be written another tabular data format with ``pytablewriter``.

Sponsors
====================================
.. image:: https://avatars0.githubusercontent.com/u/44389260?s=48&u=6da7176e51ae2654bcfd22564772ef8a3bb22318&v=4
:target: https://github.com/chasbecker
:alt: Charles Becker (chasbecker)


`Become a sponsor <https://github.com/sponsors/thombashi>`__



Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytablewriter-0.58.0.tar.gz (184.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytablewriter-0.58.0-py3-none-any.whl (96.8 kB view details)

Uploaded Python 3

File details

Details for the file pytablewriter-0.58.0.tar.gz.

File metadata

  • Download URL: pytablewriter-0.58.0.tar.gz
  • Upload date:
  • Size: 184.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.6

File hashes

Hashes for pytablewriter-0.58.0.tar.gz
Algorithm Hash digest
SHA256 d232491e32fc84f28a6217fcd225d2ed82ae59d576d39724c98fdb7c7147b9ec
MD5 87cd81462d5e0aec58d322843b42de70
BLAKE2b-256 f86f3b0442e21c18233fb4b6d1413fb08959e89921b4875a60b09f0f8c69ca7c

See more details on using hashes here.

File details

Details for the file pytablewriter-0.58.0-py3-none-any.whl.

File metadata

  • Download URL: pytablewriter-0.58.0-py3-none-any.whl
  • Upload date:
  • Size: 96.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.6

File hashes

Hashes for pytablewriter-0.58.0-py3-none-any.whl
Algorithm Hash digest
SHA256 763fb7717b64320188b2f55c5667f9f03c6fef3b00ac0aaafa85b6b6f2741b36
MD5 3d158ef348f73a9f83ef37adebfec23f
BLAKE2b-256 fde262b208cdb8771dee1849bd2b4ed129284e1efff7669985697e4c124c1000

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page