Dis que j'ai l'entrée de repos suivante: Ce que je voudrais finir avec est un dict comme celui-ci: p> J'ai essayé d'utiliser ceci: p> Il analyse la liste de champs, mais je me retrouve avec un pseudo xml dans puisque l'arborescence code> dict ne contient aucune autre information utile et qui est juste une chaîne, je ne sais pas comment analyser la liste de terrain hors du document de repos. Comment ferais-je cela? P> p> arbre ["tout"]? code>: p>
3 Réponses :
Vous pouvez essayer d'utiliser quelque chose comme le code suivant. Plutôt que d'utiliser la méthode Publish_parts Code> J'ai utilisé
Publish_doctree
, pour obtenir la représentation pseudo-xml de votre document. J'ai ensuite converti en XML DOM afin d'extraire tous les éléments code> code>. Ensuite, j'obtiens le premier field_name code> et
champs_body code> éléments de chaque champ
code> élément.
from docutils.core import publish_doctree
source = """Some text ...
:foo: bar
Some text ...
"""
# Parse reStructuredText input, returning the Docutils doctree as
# an `xml.dom.minidom.Document` instance.
doctree = publish_doctree(source).asdom()
# Get all field lists in the document.
fields = doctree.getElementsByTagName('field')
d = {}
for field in fields:
# I am assuming that `getElementsByTagName` only returns one element.
field_name = field.getElementsByTagName('field_name')[0]
field_body = field.getElementsByTagName('field_body')[0]
d[field_name.firstChild.nodeValue] = \
" ".join(c.firstChild.nodeValue for c in field_body.childNodes)
print d # Prints {u'foo': u'bar'}
Merci, ça ressemble à ce que je cherche!
J'ai une solution alternative que je trouve moins un fardeau, mais peut-être plus fragile. Après avoir examiné la mise en œuvre de la classe nœud https: / /sourceforge.net/p/docutils/code/head/tree/trunk/docutils/docutils/nodes.py Vous verrez qu'il prend en charge une méthode de marche pouvant être utilisée pour retirer les données souhaitées sans avoir à Créez deux représentations XML différentes de vos données. Voici ce que j'utilise maintenant, dans mon code protoype:
https://github.com/h4ck3rm1k3/gcc-introspector/blob/master/peewee_Adaptor.py#l33 p> puis p> < Pré> xxx pré> p>