Question

Travailler avec python de manière interactive, il est parfois nécessaire d'afficher un résultat qui est une structure de données arbitrairement complexe (comme des listes avec des listes incorporées, etc.). Le moyen par défaut de les afficher consiste en un seul vidage linéaire massif qui ne cesse de se dérouler et que vous devez analyser avec soin pour le lire.

Y a-t-il quelque chose qui prend n'importe quel objet python et l'affiche d'une manière plus rationnelle. par exemple

[0, 1,
    [a, b, c],
    2, 3, 4]

au lieu de:

[0, 1, [a, b, c], 2, 3, 4]

Je sais que ce n'est pas un très bon exemple, mais je pense que vous avez compris l'idée.

Était-ce utile?

La solution

from pprint import pprint
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
pprint(a)

Notez que pour une liste restreinte comme mon exemple, pprint l’imprimera en fait sur une seule ligne. Cependant, pour les structures plus complexes, il fait un très bon travail d'impression de jolies données.

Autres conseils

Parfois, YAML peut être utile à cet égard.

import yaml
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
print yaml.dump(a)

Produit:

- 0
- 1
- [a, b, c]
- 2
- 3
- 4

En plus de pprint.pprint , pprint.pformat est vraiment utile pour rendre lisibles les __ repr __ . Mes complexes __ repr __ ressemblent généralement à ceci:

def __repr__(self):
    from pprint import pformat

    return "<ClassName %s>" % pformat({"attrs":self.attrs,
                                       "that_i":self.that_i,
                                       "care_about":self.care_about})

Une autre bonne option consiste à utiliser IPython , qui est un environnement interactif avec de nombreuses fonctionnalités supplémentaires. caractéristiques, y compris l'impression automatique jolie, la complétion par tabulation des méthodes, l'accès facile au shell, et bien plus encore. C'est aussi très facile à installer.

didacticiel IPython

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top