Как извлечь содержимое в пределах XML, используя python в CSV - PullRequest
0 голосов
/ 26 апреля 2020

Это мой xml

</testsuites>`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<testsuites>
<testsuite name="Test" tests="7" failure="1" timestamp="2019-12-11T11:33:16.057Z">
  <testcase **name**="02. Create pinboard" classname="Testcase" **time**="88.832">
  </testcase>
 <testcase **name**="17. Adding Data labels to a Geo chart" classname="Testcases" **time**="68.39">
    <**failure message**="Step Failed: Element not found More info at: https://"www.google.com"/>
  </testcase>
</testsuite>
</testsuites>`

Из этого я хочу извлечь значения имени, времени, сообщения об ошибке с помощью python в CSV. Как я должен это сделать. Пожалуйста, предложите

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Как насчет этого?

from simplified_scrapy import SimplifiedDoc,utils
html = '''
</testsuites>`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<testsuites>
<testsuite name="Test" tests="7" failure="1" timestamp="2019-12-11T11:33:16.057Z">
  <testcase **name**="02. Create pinboard" classname="Testcase" **time**="88.832">
  </testcase>
 <testcase **name**="17. Adding Data labels to a Geo chart" classname="Testcases" **time**="68.39">
    <**failure message**="Step Failed: Element not found More info at: https://www.google.com"/>
  </testcase>
</testsuite>
</testsuites>`
'''
doc = SimplifiedDoc(html)
row = []
row.append(["name","tests", "failure","timestamp","testcase_name","testcase_classname","testcase_time","failure_message"])
testsuites = doc.selects('testsuites>testsuite')
for t in testsuites:
  for testcase in t.testcases:
    message = testcase.select('**failure>message**()')
    row.append([t.name,t.tests, t.failure,t.timestamp,testcase['**name**'],testcase['classname'],testcase['**time**'],message])

utils.save2csv("test.csv",row)

Результат:

name,tests,failure,timestamp,testcase_name,testcase_classname,testcase_time,failure_message
Test,7,1,2019-12-11T11:33:16.057Z,02. Create pinboard,Testcase,88.832,
Test,7,1,2019-12-11T11:33:16.057Z,17. Adding Data labels to a Geo chart,Testcases,68.39,Step Failed: Element not found More info at: https://www.google.com
0 голосов
/ 26 апреля 2020

Если я правильно понял, вы хотите извлечь информацию из файла. XML и записать его (возможно, после некоторой последующей обработки) в файл .CSV.

Для этого мой совет будет упорядочите свой код с помощью:

  • части считывателя: возьмите файл. xml в качестве входных данных и сохраните информацию в своем data structure. Вы можете легко проанализировать xml файлы, используя xml library .

  • часть записи: примите data structure в качестве ввода (обычно перебирая его) для записать в выходной файл .csv. Вы можете сделать это с csv library или просто с классическим методом открытия файла (поскольку csv легко форматировать).

В зависимости от вашего кода каждая часть может быть функция (но также класс или пакет). data structure предназначен для ваших нужд, но вы можете хранить все данные в списках, словарях, массивах или DataFrame. Обратите внимание, что с такой библиотекой, как numpy / pandas, уже есть функция для записи содержимого массива / DataFrame. в файле .csv.

Поскольку было неясно, я предположил из вашего поста, что вы не знаете, с чего начать. Надеюсь, это поможет вам решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...