-1
votes

Comment écrire CSV dans la colonne suivante

J'ai une sortie que je peux écrire dans un CSV. Cependant, en raison de la configuration de mon XML sur le texte, la sortie elle-même itère de manière incorrecte. J'ai essayé beaucoup pour réparer ma sortie XML, mais je ne vois pas de moyen de le réparer.

J'ai essayé beaucoup, y compris modifier mes déclarations XML pour essayer d'écrire à la CSV de différentes manières, mais Je ne peux pas sembler avoir les lignes pour faire correspondre la façon dont j'en ai besoin d'être, à cause de la part des déclarations différentes de profondeurs.

Je ne me soucie pas de ce que c'est fait, alors Bien que cela correspond à la hausse, car les données sont finalement introduites dans ma base de données SQL.

ci-dessous est mon code, xxx

ci-dessous est ma sortie de courant CSV, Entrez la description de l'image ici

ci-dessous est la sortie dont j'ai besoin,

 Entrez la description de l'image ici < / p>


3 commentaires

Est-il possible d'ajouter un exemple de xmltest.xml ? Aussi, y a-t-il une raison pour laquelle vous ne pouvez pas utiliser CSV ?


Malheureusement non, le XML est vraiment grand et exclusif. Je peux utiliser CSV, que je regarde maintenant. Je pensais à tourner à la sortie de la déclaration dans une liste, puis de construire les colonnes de CSV. Mais je n'ai aucune idée de la façon de faire ça.


Sur la base des espaces de noms que vous utilisez dans votre code, il apparaît que vous utilisez la spécification XCCDF. D'après ce que je peux voir le ou les schémas de cette spécification sont accessibles au public. Vous devriez être capable de créer un petit fichier de test suffisamment correspondant à la structure de votre fichier actuel, mais contient des données factices au lieu des données de votre entreprise. Ce que je ferais, c'est construire un dictionnaire pour chaque ligne et utiliser Dictwriter < / a> Pour écrire ces lignes à la sortie. Cela pourrait être fait avec plusieurs boucles, mais il pourrait y avoir un moyen plus facile. Difficile à raconter sans échantillon XML.


3 Réponses :


0
votes

essayer de changer ce
x = (x.split ('_') [0])


0 commentaires

0
votes

Pensez à ce que votre sortie CSV ressemble, alors pensez à ce que cela devrait ressembler.

Votre CSV est généré par ces deux boucles: P>

for child in root.findall('{http://checklists.nist.gov/xccdf/1.2}Group'):
    x = (str(child.attrib))
    x = (x.split('_')[6])
    a = x[:-2]
    firstFile.write("\n" + a + ',')
for child in root:
    for children in child:
        for childrens in children.findall('{http://checklists.nist.gov/xccdf/1.2}result'):
            x = childrens.text
            if ('pass' in x):
                c = 'Completed'
            else:
                c = 'Ongoing'
            firstFile.write('\t' + '\n' + ',' + b + ',' + c + ',' + ',' + ',' + d)


0 commentaires

0
votes

Cela résolue pour moi. Je l'ai fondamentalement laissé, comme le mettez-le dans un CSV, puis lisez le CSV, stocké les colonnes sous forme de liste, supprimé des espaces vides et l'exporté. xxx


0 commentaires