それぞれの列の最長文字列を考慮して手動でテーブルを作成しなければなりませんか?またはこれには組み込みメソッドがありますか?私はPythonテーブルを検索しましたが、問題に関連するものは何も見つかりませんでした。また、私が手動で入力したサンプルテーブルは、すべてのセル(適切に整列されていない)では対称ではありません。表の作成
問題の要点は、+ - |です。テーブルの作成。
どうすればよいですか?
それぞれの列の最長文字列を考慮して手動でテーブルを作成しなければなりませんか?またはこれには組み込みメソッドがありますか?私はPythonテーブルを検索しましたが、問題に関連するものは何も見つかりませんでした。また、私が手動で入力したサンプルテーブルは、すべてのセル(適切に整列されていない)では対称ではありません。表の作成
問題の要点は、+ - |です。テーブルの作成。
どうすればよいですか?
組み込みの方法に最も近いものはstr.formatを使用している:
import csv
with open("output.txt") as f:
lines = list(csv.reader(f,delimiter=","))
# get longest string for alignment
mx_len = len(max((max(ele,key=len) for ele in lines),key=len))
# transpose the list items
zipped = zip(*lines)
# get header/first row
row1 = zipped[0]
# how many "-" we need depends on longests word length
pattern = "-"*mx_len
f = ("+{pat}+{pat}+{pat}+".format(pat=pattern))
print(f)
# pass in mx_len as align value
print("|{:<{i}}|{:<{i}}|{:<{i}}|".format(*row1,i=mx_len))
print(f)
# print the rest of the transposed data excluding column 1/row1
for a, b, c in zipped[1:]:
print("|{:<{i}}|{:<{i}}|{:<{i}}|".format(a.rstrip(),b.rstrip(),c.rstrip(),i=mx_len))
print(f)
+------------+------------+------------+
|Colour |Taste |Smell |
+------------+------------+------------+
| Red | Good | Pleasant |
| Black | Bad | Deceptive |
| Blue | Disgusting | Intolerable|
+------------+------------+------------+
をファイルにしている正確にどのように多くのcolsのを知っているがなけれ:
with open("output.txt") as f:
lines = list(csv.reader(f, delimiter=","))
mx_len = len(max((max(ele, key=len) for ele in lines), key=len))
zipped = zip(*lines)
row1 = zipped[0]
ln = len(row1)
pattern = "-" * mx_len
f = (("+{pat}" * ln + "+").format(pat=pattern))
print(f)
print(("|{:<{i}}" * ln + "|").format(*row1, i=mx_len))
print(f)
for row in zipped[1:]:
print(("|{:<{i}}" * ln + "|").format(*row, i=mx_len))
print(f)
+------------+------------+------------+
|Colour |Taste |Smell |
+------------+------------+------------+
| Red | Good | Pleasant |
| Black | Bad | Deceptive |
| Blue | Disgusting | Intolerable|
+------------+------------+------------+
これはビルトインいますされていませんterminaltablesを使用することができます。
from terminaltables import AsciiTable
with open('test.csv') as f:
table_data = [line.split(",") for line in f]
transposed = [list(i) for i in zip(*table_data)]
print(AsciiTable(transposed).table)
だけで行うインストールするには:
pip install terminaltables