Как выровнять текст из python в столбцы в моем терминале? - PullRequest
8 голосов
/ 31 августа 2009

Я печатаю некоторые значения из скрипта в моем окне терминала, например:

for i in items:
    print "Name: %s Price: %d" % (i.name, i.price)

Как мне сделать эти строки в столбцы?

Ответы [ 3 ]

18 голосов
/ 31 августа 2009

Если вам известны максимальные длины данных в двух столбцах, вы можете использовать классификаторы формата. Например, если имя длиной не более 20 символов, а цена будет соответствовать 10 символам, вы можете сделать

print "Name: %-20s Price: %10d" % (i.name, i.price)

Это лучше, чем использование вкладок, поскольку в некоторых случаях вкладки не выстраиваются в ряд (например, если одно имя немного длиннее другого).

Если некоторые имена не помещаются в используемое пространство, вы можете использовать спецификатор формата . для усечения данных. Например, использование «% -20.20s» для формата имени приведет к обрезанию любых более длинных имен до 20-символьного столбца.

9 голосов
/ 31 августа 2009

Как сказал Винай, используйте спецификаторы формата строки.

Если вы не знаете максимальные длины, вы можете найти их, сделав дополнительный проход по списку:

maxn, maxp = 0, 0
for item in items:
    maxn = max(maxn, len(item.name))
    maxp = max(maxp, len(str(item.price)))

затем используйте '*' вместо числа и укажите рассчитанную ширину в качестве аргумента.

for item in items:
    print "Name: %-*s Price: %*d" % (maxn, item.name, maxp, item.price)
0 голосов
/ 31 августа 2009

Вы также можете использовать методы rjust () / ljust () для объектов str.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...