我应该如何使用python将XML中的内容提取到CSV中



这是我的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。我该怎么做。请建议

如果我很清楚,您希望从.XML文件中提取信息,并将其写入.CSV文件(可能经过一些后处理(。

要做到这一点,我的建议是用组织您的代码

  • 阅读器部分:将.xml文件作为输入,并将信息存储在data structure中。您可以使用xml库轻松地解析xml文件。

  • 编写器部分:将data structure作为输入(通常对其进行迭代(写入.csv输出文件。您可以使用csv库,也可以简单地使用经典的打开文件方法(因为csv很容易格式化(。

根据您的代码,每个部分都可以是一个函数(也可以是一类或一个包(。data structure是为您的需求而构建的,但您可以将每个数据存储在列表、字典、数组或DataFrame中。。注意,对于像numpy/pandas这样的库,已经有了将数组/DataFrame的内容写入.csv文件的功能。

由于不清楚,我从你的帖子中推测你不知道如何开始。希望这能帮助你解决你的问题。

这个怎么样?

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

最新更新