Печать табличных данных в Python

Как лучше всего печатать табличные данные в Python? Скажем, данные находятся в 2D-списке, и я хочу создать умную таблицу. На самом деле у меня есть список словарей, и я хочу напечатать пересечение в зависимости от значений в словарях. Что-то типа

for val1 in my_dict:
   for val2 in my_dict:
    if val1['a'] > val2['a']:
      print 'x'

но таким образом, что каждый столбец имеет фиксированную ширину. Классы записи и форматирования кажутся чем-то из области возможного, но все же кажутся сложными в использовании по сравнению, скажем, с форматером Perl.

Существуют ли какие-либо существующие реализации или мне нужно написать свою собственную?


person Makis    schedule 25.02.2011    source источник
comment
Я думаю, вы могли бы попробовать pprint (да, два 'p's). Я не использую его, но я видел, как другие используют его в подобных ситуациях, и, следовательно, здесь звонит звонок   -  person inspectorG4dget    schedule 25.02.2011
comment
Я просмотрел pprint, но не понимаю, как его использовать так, как мне нужно.   -  person Makis    schedule 26.02.2011
comment
Возможный дубликат имеет больше голосов и ответов: .com/questions/9535954/. Всегда давайте явные желаемые примеры вывода =)   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 25.03.2014
comment
Возможный дубликат Как я могу красиво печатать таблицы ASCII с помощью Python?   -  person ivan_pozdeev    schedule 18.07.2018


Ответы (3)


Знаете ли вы о PyPi?

DataGrid и PrettyTable кажутся двумя хорошими альтернативами, которые я нашел с помощью краткого поиска. Возможно, вам придется собрать данные в том формате, в котором вы хотите (с «x», если ваше условие истинно) перед отправкой их в предоставленные подпрограммы.

person Hut8    schedule 25.02.2011

print "%20s" % somevar 

Напечатает значение «somevar» и использует до 20 пробелов. Добавьте запятую после оператора печати, чтобы избежать разрыва строки, и, конечно же: прочитайте документы по операциям форматирования строк по оператору '%'

person Andreas Jung    schedule 25.02.2011

Вот два способа написать таблицу квадратов и кубов:

for x in range(1, 11):
    print repr(x).rjust(2), repr(x*x).rjust(3),print repr(x*x*x).rjust(4)

for x in range(1,11):
    print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)

Подробнее см. здесь.

person imsc    schedule 25.02.2011