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()
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_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.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
File details
Details for the file pytablewriter-0.14.1.tar.gz
.
File metadata
- Download URL: pytablewriter-0.14.1.tar.gz
- Upload date:
- Size: 70.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7147f12b58ab6506488fc7cd5719dc73f4c03aafaecd5fe7d378297ea5758eaa |
|
MD5 | 0c45bc31cec49d462fcae16ac3a494d2 |
|
BLAKE2b-256 | cbf75000d900ddc927300cc4d8492e06f87a79f830a463bea459b3e03ad6742b |
File details
Details for the file pytablewriter-0.14.1-py2.py3-none-any.whl
.
File metadata
- Download URL: pytablewriter-0.14.1-py2.py3-none-any.whl
- Upload date:
- Size: 34.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | adf342ad6bc5f87a37d7a0b42f8cda2e25900bd9a7bf90af34c4bf85ac1d336a |
|
MD5 | 74ce25b4fe7b47c045cff675ee95e3fd |
|
BLAKE2b-256 | 91007649b67ada91832fef7541fd023e67a295c6d3332d03b0f00fcb7f6c6203 |