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

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

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

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

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

Ответ 1

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

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

Ответ 2

print "%20s" % somevar 

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

Ответ 3

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

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)

Подробнее о этом.

Ответ 4

Tabulate - еще один пакет, который еще не упоминался для обработки такого рода задач. Хорошей особенностью является то, что он отлично играет с Pandas DataFrames.