7
votes

TypeError: objet 'non constitué' non appelable python avec beauxoup xml

J'ai le fichier XML suivant:

soup = BeautifulSoup(open("path/to/xmlfile"), features="xml") 


with open('path/to/outputfile', 'a') as f:
    for i in range(len(soup.findall('active-user-name'))):
        f.write ('%s\t%s\t%s\t%s\n' % (soup.findall('active-user-name')[i].text, soup.findall('authentication-realm')[i].text, soup.findall('user-roles')[i].text, soup.findall('login-node')[i].text))


0 commentaires

3 Réponses :


2
votes

La solution est simple: n'utilisez pas Restacletall méthode - Utilisez Find_All .

Pourquoi? Parce qu'il n'y a pas de méthode retranchée , il existe Restacletall et Find_All , qui sont équivalents. Voir Docs pour plus d'informations.

Cependant, je suis d'accord, le message d'erreur est déroutant.

espère que cela aide.


1 commentaires

merci, remplacez la suite avec Find_all et c'est ce que je veux



8
votes

Il y a un certain nombre de problèmes à traiter avec cela, le premier est que le fichier XML que vous avez fourni n'est pas valide XML - un élément racine est requis.

Essayez quelque chose comme ceci comme xml: xxx

maintenant sur le python. Tout d'abord, il n'y a pas de méthode (code> (code>, il est soit Findall ou recherche_all . RÉSUCTALL et Find_All sont équivalents, comme documenté Ici

Suivant up, je vous suggère de modifier votre code pour que vous n'utilisiez pas la méthode Find_All assez souvent - en utilisant trouver Aura lieu améliorera l'efficacité, en particulier pour les gros fichiers XML. De plus, le code ci-dessous est plus facile à lire et à déboguer: xxx

espère que cela aide cela aide. Faites-moi savoir si vous avez besoin d'une aide supplémentaire!


0 commentaires

0
votes

La solution pour ma version de ce problème consiste à contraindre la magnifique instance dans une chaîne de type. Vous suivez cela suivant: https://groups.google.com/forum/#!Topic /comp.lang.python/ymrea29fmfi

Vous utilisez le pythonic suivant: Du manuel Python

str ([objet])

Renvoie une chaîne contenant une représentation joliment imprimable d'un objet. Pour les chaînes, cela retourne la ficelle elle-même. La différence avec REC (objet) est que STR (objet) ne tente pas toujours de renvoyer une chaîne acceptable pour eval (); Son objectif est de rendre un Chaîne imprimable. Si aucun argument n'est donné, renvoie la chaîne vide,


0 commentaires