У меня есть довольно печатный модуль, который я подготовил, потому что я был недоволен, что модуль pprint выпустил миллион строк для списка номеров, у которого был один список списка. Вот пример использования моего модуля.Как расширить симпатичный модуль печати на таблицы?
>>> a=range(10)
>>> a.insert(5,[range(i) for i in range(10)])
>>> a
[0, 1, 2, 3, 4, [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], 5, 6, 7, 8, 9]
>>> import pretty
>>> pretty.ppr(a,indent=6)
[0, 1, 2, 3, 4,
[
[],
[0],
[0, 1],
[0, 1, 2],
[0, 1, 2, 3],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5, 6],
[0, 1, 2, 3, 4, 5, 6, 7],
[0, 1, 2, 3, 4, 5, 6, 7, 8]], 5, 6, 7, 8, 9]
Код выглядит так:
""" pretty.py prettyprint module version alpha 0.2
mypr: pretty string function
ppr: print of the pretty string
ONLY list and tuple prettying implemented!
"""
def mypr(w, i = 0, indent = 2, nl = '\n') :
""" w = datastructure, i = indent level, indent = step size for indention """
startend = {list : '[]', tuple : '()'}
if type(w) in (list, tuple) :
start, end = startend[type(w)]
pr = [mypr(j, i + indent, indent, nl) for j in w]
return nl + ' ' * i + start + ', '.join(pr) + end
else : return repr(w)
def ppr(w, i = 0, indent = 2, nl = '\n') :
""" see mypr, this is only print of mypr with same parameters """
print mypr(w, i, indent, nl)
Вот один фиксированный текст для таблицы печати в моем довольно модуль печати:
## let's do it "manually"
width = len(str(10+10))
widthformat = '%'+str(width)+'i'
for i in range(10):
for j in range(10):
print widthformat % (i+j),
print
У вас лучшая альтернатива для этого кода обобщается достаточно для красивого модуля печати?
То, что я нашел для такого рода регулярных случаев после размещения вопроса этого модуль: prettytable A simple Python library for easily displaying tabular data in a visually appealing ASCII table format
Ваш вопрос вроде «почему он делает именно то, что я говорю это, чтобы делать?". Ответ заключается в том, что ваши ожидания относительно того, что он должен делать для вас, не соответствуют тому, что он делает. – msw
У меня есть ожидания, что генераторы должны давать полезные результаты для интерпретатора. Язык значков дает хорошие ответы 0..n. Язык значков не оправдывает мое ожидание использования интерпретации, которое Python в основном заполняет. Ожидания и лень являются источниками развития :) –
Генераторы не могут быть напечатаны, потому что их нельзя перематывать (по определению). Итак, ваши ожидания не имеют смысла, радуйтесь, что они не заполнены: p Что вы подразумеваете под '0 .. n' является' xrange (0, n) 'в Python, и они имеют очень разумное представление. –