Skip to main content

pytablewriter

https://badge.fury.io/py/pytablewriter.svg https://img.shields.io/pypi/pyversions/pytablewriter.svg https://img.shields.io/travis/thombashi/pytablewriter/master.svg?label=Linux https://img.shields.io/appveyor/ci/thombashi/pytablewriter/master.svg?label=Windows https://coveralls.io/repos/github/thombashi/pytablewriter/badge.svg?branch=master

Summary

A python library to write a table in various formats: CSV/HTML/JavaScript/JSON/LTSV/Markdown/MediaWiki/Excel/Pandas/Python/reStructuredText/TOML/TSV.

Features

  • Write a table in various formats:
  • Automatic tabular data formatting
    • Alignment

    • Padding

    • Decimal places of numbers

  • Multibyte character support

  • Write table to a stream such as a file/standard-output/string-buffer

Examples

Write a Markdown table

import pytablewriter

writer = pytablewriter.MarkdownTableWriter()
writer.table_name = "example_table"
writer.header_list = ["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()
# 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

markdown_ss

Rendered markdown at GitHub

Write a reStructuredText table (Grid Tables)

import pytablewriter

writer = pytablewriter.RstGridTableWriter()
writer.table_name = "example_table"
writer.header_list = ["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()
.. table:: 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

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

Write a table with JavaScript format (as a nested list variable definition)

import pytablewriter

writer = pytablewriter.JavaScriptTableWriter()
writer.table_name = "example_table"
writer.header_list = ["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()
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 table to an Excel sheet

import pytablewriter

writer = pytablewriter.ExcelXlsxTableWriter()
writer.open_workbook("sample.xlsx")

writer.make_worksheet("example")
writer.header_list = ["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.write_table()

writer.close()

Output of Excel book

excel_single

Output excel file (sample_single.xlsx)

Write a table using multibyte character

You can use multibyte character as table data.

import pytablewriter

writer = pytablewriter.RstSimpleTableWriter()
writer.table_name = "生成に関するパターン"
writer.header_list = ["パターン名", "概要", "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()
multi_byte_char_table

Output of multi-byte character table

Write a table from pandas.DataFrame instance

import pandas as pd
import pytablewriter
from StringIO import StringIO

csv_data = StringIO(u""""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 = pytablewriter.MarkdownTableWriter()
writer.from_dataframe(df)
writer.write_table()
 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

For more information

More examples are available at http://pytablewriter.rtfd.io/en/latest/pages/examples/index.html

Installation

pip install pytablewriter

Dependencies

Python 2.7+ or 3.3+

Test dependencies

Documentation

http://pytablewriter.rtfd.io/

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.17.0.tar.gz (74.6 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.17.0-py2.py3-none-any.whl (38.0 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

File hashes

Hashes for pytablewriter-0.17.0.tar.gz
Algorithm Hash digest
SHA256 e244b69fb570b173bd81803eb81daf08e00e9fc0198cefcb7790dea040dfeca3
MD5 ad133ca8825a822ab82742ea8f4514e9
BLAKE2b-256 29c5cfde25c15588d180fd17e3f7e1fa7c6e4e4074360387c8fd8cce7e8fce37

See more details on using hashes here.

File details

Details for the file pytablewriter-0.17.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pytablewriter-0.17.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0087b0a81476d9a5864c2e981af0e5483447339170008cf20b7d1290ef68ee76
MD5 2ce93d4cd61f732344e6e3c419382fde
BLAKE2b-256 c71a7523a83d52c2ee6e396c2d97fd982710c8efb2a4bb317785244bb1ab9a54

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

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