#python #multiple-columns
#python #несколько столбцов
Вопрос:
Это часть моего скрипта, написанного на python:
print 'Urlttpopularity_rankttreach_rankttcountry_rank'
urls = open(filename)
for site in urls:
url = site.rstrip()
data = Func(url)
popularity_rank, reach_rank, country_rank = -1, -1, -1
if data:
popularity_rank, reach_rank , country_rank = data
print '%st%dt%dt%d' % (url, popularity_rank, reach_rank, country_rank)
Результат выглядит примерно так:
Url popularity_rank reach_rank country_rank
test.com 228512 222347 -1
test1.com 173834 189659 -1
Как я могу получить вывод в виде хорошей колонки с ljust()
помощью?
Комментарии:
1. И каким тогда будет ожидаемый результат? Какова максимальная длина URL-адресов?
2. Я просто хочу их разбить на столбцы… Я не знаю, какова максимальная длина URL-адресов на самом деле… может быть 15 — это хорошо,
3. Я был бы благодарен за вашу помощь 🙂
Ответ №1:
Как насчет этого — без ljust()
и без t
values = {
'test.com': [228512, 222347, -1 ],
'test1.com': [173834, 189659, -1 ]
}
print '| %-15s | s | s | s |' % ('Url', 'popularity_rank', 'reach_rank', 'country_rank')
print ' ' ('-'*17) ' ' ('-'*17) ' ' ('-'*17) ' ' ('-'*17) ' '
for url, data in values.items():
popularity_rank, reach_rank , country_rank = data
print '| %-15s | d | d | d |' % (url, popularity_rank, reach_rank, country_rank)
.
| Url | popularity_rank | reach_rank | country_rank |
----------------- ----------------- ----------------- -----------------
| test1.com | 173834 | 189659 | -1 |
| test.com | 228512 | 222347 | -1 |
Редактировать:
Если вы не знаете, какой длинный столбец вам нужен, используйте *
строку форматирования.
Но вам нужно знать все значения, прежде чем искать longest
.
text = [ 'a', 'abcdef', 'abc' ]
longest = max( len(x) for x in text )
for x in text:
print "| %*s |" % (longest, x)
print
for x in text:
print "| %*s |" % (-longest, x)
.
| a |
| abcdef |
| abc |
| a |
| abcdef |
| abc |
Комментарии:
1. Спасибо за помощь .. но этот скрипт считывает файл, содержимое которого представляет собой несколько URL-адресов… Это входные данные этого скрипта, и valus генерирует
data=Func(url)
их . Не могли бы вы помочь мне в этом?2. Данные в значении являются переменными, и они генерируются из функции (url). Если вы file.txt на выходе получается test.com и test1.com .
3. Я использую
values
, потому что у меня нет ваших файлов, но более важные элементы находятся в строках сs
or%-15s
.4. Используйте
s
или%-15s
илиd
или%-15d
5. Вы можете использовать пробелы (‘ ‘) вместо
t
или использовать строку, аналогичную моему примеруprint '%-15ssss' % ('Url', 'popularity_rank', 'reach_rank', 'country_rank')