pytablewriter is a python library to write a table in various formats: CSV/HTML/JavaScript/JSON/Markdown/MediaWiki/Excel/Pandas/Python/reStructuredText
Project description
pytablewriter
Summary
pytablewriter is a python library to write a table in various formats: CSV/HTML/JavaScript/JSON/Markdown/MediaWiki/Excel/Pandas/Python/reStructuredText
Features
- Write a table in various formats:
CSV
- Microsoft Excel TM
.xlsx format
.xls format
HTML
JavaScript (Definition of a nested list variable)
JSON
Markdown
MediaWiki
Pandas (Definition of a DataFrame variable)
Python code (Definition of a nested list variable)
- reStructuredText
Grid tables
Simple tables
CSV table
- Automatic tabular data formatting
Alignment
Padding
Decimal places of numbers
Multibyte character support
Output table to a stream such as a file or the standard output
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.1|hoge|True | 0|2017-01-01 03:04:05+0900
2| -2.2|foo |False| |2017-12-23 12:34:51+0900
3| 0.0|bar |True |inf|2017-03-03 22:44:55+0900
-10| -9.9| |False|nan|2017-01-01 00:00:00+0900
Rendering result
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
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 JavaScript table (variable definition of nested list)
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()
var example_table = [
["int", "float", "str", "bool", "mix", "time"],
[0, 0.10, "hoge", true, 0, new Date("2017-01-01T03:04:05+0900")],
[2, -2.23, "foo", false, null, new Date("2017-12-23T12:34:51+0900")],
[3, 0.00, "bar", true, Infinity, new Date("2017-03-03T22:44:55+0900")],
[-10, -9.90, "", false, NaN, new Date("2017-01-01T00: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
Write a table with 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()
.. table:: 生成に関するパターン
================ ============================================================================ === ================
パターン名 概要 GoF Code Complete[1]
================ ============================================================================ === ================
Abstract Factory 関連する一連のインスタンスを状況に応じて、適切に生成する方法を提供する。 Yes Yes
Builder 複合化されたインスタンスの生成過程を隠蔽する。 Yes No
Factory Method 実際に生成されるインスタンスに依存しない、インスタンスの生成方法を提供する。 Yes Yes
Prototype 同様のインスタンスを生成するために、原型のインスタンスを複製する。 Yes No
Singleton あるクラスについて、インスタンスが単一であることを保証する。 Yes Yes
================ ============================================================================ === ================
Rendering result
パターン名 |
概要 |
GoF |
Code Complete[1] |
---|---|---|---|
Abstract Factory |
関連する一連のインスタンスを状況に応じて、適切に生成する方法を提供する。 |
Yes |
Yes |
Builder |
複合化されたインスタンスの生成過程を隠蔽する。 |
Yes |
No |
Factory Method |
実際に生成されるインスタンスに依存しない、インスタンスの生成方法を提供する。 |
Yes |
Yes |
Prototype |
同様のインスタンスを生成するために、原型のインスタンスを複製する。 |
Yes |
No |
Singleton |
あるクラスについて、インスタンスが単一であることを保証する。 |
Yes |
Yes |
Write a table from pandas DataFrame
import pandas as pd
import pytablewriter
from StringIO import StringIO
csv = 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, sep=',')
writer = pytablewriter.MarkdownTableWriter()
writer.set_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.readthedocs.org/en/latest/pages/examples/index.html
Installation
pip install pytablewriter
Dependencies
Python 2.7+ or 3.3+
Test dependencies
Documentation
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
Built Distribution
Hashes for pytablewriter-0.13.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6aa45fd434f07b12d506f10b2020096dcd18e6ad895d83590fb0d9b009792cde |
|
MD5 | 3d28dc9cd546e46e8ad785ef55245546 |
|
BLAKE2b-256 | 12a36732c84d34ef40be902906036179c5c1065bbc097f4661d79f1986694b87 |