J'ai le joli module d'impression, que j'ai préparé parce que je n'étais pas heureux que le module pprint ait produit des lignes de zillion pour la liste des nombres qui avaient une liste de liste. Voici un exemple d'utilisation de mon module.Comment étendre le joli module d'impression aux tables?
>>> 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]
code
est comme ceci:
""" 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)
Voici un texte fixe pour l'impression de table dans mon module assez d'impression:
## 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
Avez-vous une meilleure alternative pour ce code à généraliser assez pour le joli module d'impression?
Ce que je trouve pour ce genre de cas réguliers après avoir affiché la question est ce module: prettytable A simple Python library for easily displaying tabular data in a visually appealing ASCII table format
Votre question est un peu « pourquoi est-il fait exactement ce que je dis à faire?". La réponse est que vos attentes sur ce qu'il devrait faire pour vous ne correspondent pas à ce qu'il fait. – msw
J'ai des attentes que les générateurs devraient donner des résultats utiles pour l'interprète. Le langage des icônes donne bien 0..n réponses. Le langage des icônes ne répond pas à mes attentes d'utilisation interprétative, que Python remplit pour la plupart. Les attentes et la paresse sont source de développement :) –
Les générateurs ne peuvent pas être imprimés car ils ne peuvent pas être rembobinés (par définition). Donc, vos attentes n'ont aucun sens, soyez heureux qu'ils ne soient pas remplis: p Ce que vous voulez dire par '0 .. n' est' xrange (0, n) 'en Python et ils ont une représentation très sensible. –