Выравнивание вывода по правому краю
Как правильно выровнять строку, которую получили с помощью метода join, чтобы слова были выровнены друг под другом по правом краю
def printTable(TableData):
maxWidth = [0] * len(TableData)
for i in range(len(TableData)):
k = max(TableData[i], key=len)
maxWidth[i] = (len(k))
p = (' ').join(TableData[i])
print(p.rjust(max(maxWidth)))
TableDataList = [
['apples','oranges','cherries','banana'],
['Alice','Bob','Carol','David'],
['dogs','cats','moouse','goose']
]
print(printTable(TableDataList))
apples oranges cherries banana Alice Bob Carol David dogs cats moouse goose
Вывод должен быть как на картинке, но текст вообще не выравнивается. Подскажите, может нужно как-то выравнивать каждое слово?
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
rjust ровняет колонку. zip поворачивает матрицу:
def rjust(column):
w = max(map(len, column))
return [s.rjust(w) for s in column]
columns = [
['apples', 'oranges', 'cherries', 'banana'],
['Alice','Bob', 'Carol', 'David'],
['dogs', 'cats', 'moouse', 'goose']
]
for row in zip(*map(rjust, columns)):
print(*row)
$ python table.py apples Alice dogs oranges Bob cats cherries Carol moouse banana David goose
