【发布时间】:2017-09-12 19:18:44
【问题描述】:
我正在尝试从返回 XML 对象的 API 调用中获取数据,并将少量数据点解析到一个 csv 文件中,每个对象都在其自己的列中。
XML 如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<YourMembership_Response>
<Items>
<Item>
<ItemID></ItemID>
<ID>92304823A-2932</ID>
<WebsiteID>0987</WebsiteID>
<NamePrefix></NamePrefix>
<FirstName>John</FirstName>
<MiddleName></MiddleName>
<LastName>Smith</LastName>
<Suffix></Suffix>
<Nickname></Nickname>
<EmployerName>abc company</EmployerName>
<WorkTitle>manager</WorkTitle>
<Date>3/14/2013 2:12:39 PM</Date>
<Description>Removed from group by Administration.</Description>
</Item>
<Item>
<ItemID></ItemID>
<ID>92304823A-2932</ID>
<WebsiteID>0987</WebsiteID>
<NamePrefix></NamePrefix>
<FirstName>John</FirstName>
<MiddleName></MiddleName>
<LastName>Smith</LastName>
<Suffix></Suffix>
<Nickname></Nickname>
<EmployerName>abc company</EmployerName>
<WorkTitle>manager</WorkTitle>
<Date>3/14/2013 2:12:39 PM</Date>
<Description>Removed from group by Administration.</Description>
</Item>
我编写了这段代码,只将 ID 写入 CSV,效果很好。
with open("output1.csv", "wb") as f:
writer = csv.writer(f)
for node in tree.findall('.//ID'):
writer.writerow([node.text])
现在,当我尝试将多个数据点写入 csv 时,机器只是将数据点附加到一列中。这是我一直在尝试的代码:
with open("test1.csv", "wb") as f:
writer = csv.writer(f)
for node in tree.findall('.//ID'):
writer.writerow([node.text])
for node in tree.findall('.//FirstName'):
writer.writerow([node.text])
for node in tree.findall('.//LastName'):
writer.writerow([node.text])
我需要数据在 csv 中看起来像这样,稍后选择其他数据点,我做错了什么?:
ID FirstName LastName
92304823A-2932 John Smith
提前谢谢你。
【问题讨论】:
-
输入的xml有多大?
-
我没有输入大小的答案,但我必须为大约 15000 个成员这样做。
标签: python-2.7 xml-parsing elementtree