私は Python の初心者で、印刷出力用にデータを適切にフォーマットするのに苦労しています。
2 つの見出しに使用される 1 つのリストと、テーブルの内容となるマトリックスがあります。次のようになります。
teams_list = ["Man Utd", "Man City", "T Hotspur"]
data = np.array([[1, 2, 1],
[0, 1, 0],
[2, 4, 2]])
見出し名の長さは必ずしも同じではないことに注意してください。ただし、データ エントリはすべて整数です。
ここで、これを次のような表形式で表現したいと思います。
マンチェスター・ユナイテッド | マンチェスター・シティ | Tホットスパー | |
---|---|---|---|
マンチェスター・ユナイテッド | 1 | 0 | 0 |
マンチェスター・シティ | 1 | 1 | 0 |
Tホットスパー | 0 | 1 | 2 |
これにはデータ構造があるはずだという予感はありますが、見つけることができません。辞書を使用して印刷をフォーマットしたり、インデント付きの for ループを試したり、文字列として印刷したりしてみました。
これを行うには非常に簡単な方法があるはずですが、経験不足のため見逃している可能性があります。
ベストアンサー1
この目的には、軽量で便利な Python パッケージがいくつかあります。
1. 表にする:翻訳: 翻訳: 翻訳者: 原文: Python: 翻訳者: 原文: Python: 翻訳者: 原文:
from tabulate import tabulate
print(tabulate([['Alice', 24], ['Bob', 19]], headers=['Name', 'Age']))
Name Age
------ -----
Alice 24
Bob 19
tabulate には、ヘッダーと表の形式を指定するための多くのオプションがあります。
print(tabulate([['Alice', 24], ['Bob', 19]], headers=['Name', 'Age'], tablefmt='orgtbl'))
| Name | Age |
|--------+-------|
| Alice | 24 |
| Bob | 19 |
2. プリティテーブル:https://pypi.python.org/pypi/PrettyTable
from prettytable import PrettyTable
t = PrettyTable(['Name', 'Age'])
t.add_row(['Alice', 24])
t.add_row(['Bob', 19])
print(t)
+-------+-----+
| Name | Age |
+-------+-----+
| Alice | 24 |
| Bob | 19 |
+-------+-----+
PrettyTable には、csv、html、sql データベースからデータを読み取るオプションがあります。また、データのサブセットを選択したり、テーブルを並べ替えたり、テーブル スタイルを変更したりすることもできます。
3. テキストテーブル:https://pypi.python.org/pypi/texttable
from texttable import Texttable
t = Texttable()
t.add_rows([['Name', 'Age'], ['Alice', 24], ['Bob', 19]])
print(t.draw())
+-------+-----+
| Name | Age |
+=======+=====+
| Alice | 24 |
+-------+-----+
| Bob | 19 |
+-------+-----+
texttable を使用すると、水平/垂直の配置、境界線のスタイル、およびデータ型を制御できます。
4. 用語テーブル:https://github.com/nschloe/termtables
import termtables as tt
string = tt.to_string(
[["Alice", 24], ["Bob", 19]],
header=["Name", "Age"],
style=tt.styles.ascii_thin_double,
# alignment="ll",
# padding=(0, 1),
)
print(string)
+-------+-----+
| Name | Age |
+=======+=====+
| Alice | 24 |
+-------+-----+
| Bob | 19 |
+-------+-----+
texttable を使用すると、水平/垂直の配置、境界線のスタイル、およびデータ型を制御できます。
その他のオプション: