python - 将 XML 数据解析为数据框
问题描述
我想将 XML 中的数据提取到字典中,然后将其传递到列表中,以数据框的形式获取它。
下面是相同的代码:
import pandas as pd
import requests,sys
from xml.etree import ElementTree
response = requests.get("http://mapiuat.vwbeatroute.com/v1/customer/index?key=aQeZx9WpppnbyJmar2ry4Ah0_2WdzWo4")
tree = ElementTree.fromstring(response.content)
for child in tree[1][0][:]:
print(child)
for i in child[:]:
print(i)
thisdict = {
i.tag : i.text
}
print(thisdict)
#dicts=[]
#dicts.append(thisdict)
#print(dicts)
for x, y in thisdict.items():
print(x, y)
解决方案
另一种方法。
from simplified_scrapy import SimplifiedDoc, utils, req
xml = req.get(
'http://mapiuat.vwbeatroute.com/v1/customer/index?key=aQeZx9WpppnbyJmar2ry4Ah0_2WdzWo4'
)
doc = SimplifiedDoc(xml)
items = doc.selects('data>item')
for item in items:
children = item.children
dicts = []
for child in children:
if child.tag == 'customFields' or child.tag == 'statutoryFields':
custom = child.selects('item')
for i in custom:
thisdict = {}
for kv in i.children:
thisdict[kv.tag] = kv.text
dicts.append(thisdict)
else:
thisdict = {child.tag: child.text}
dicts.append(thisdict)
print(dicts)
结果:
[{'distributor_id': '502914'}, {'distributor_external_id': '1200012'}, {'distributor_name': 'LIVGUARD ENERGY TECHNOLOGIES PVT. LTD.'}, {'id': '724342'}, {'city': 'Mohanlal'}, {'chain_id': ''}, {'district': ''}, {'unique_id': ''}, {'contact_person': 'Mr. Mansha Ram'}, {'country': 'India'}, {'created_by': '12216'}, {'created_date': '2016-10-07 15:50:36'}, {'deleted_by': ''}, {'deleted_date': ''}, {'email': ''}, {'fax': ''}, {'fssai_number': ''}, {'group': '0'}, {'is_available': '1'}, {'landline': ''}, {'longitude': '0.000000000000'}, {'latitude': '0.000000000000'}, {'locality': ''}, {'mobile': '9453705181'}, {'modified_by': '12216'}, {'modified_date': '2019-07-12 13:24:47'}, {'name': 'SHAM ENTERPRISES'}, {'pan': ''}, {'pincode': '227305'}, {'retailer_subtype': '0'}, {'retailer_type': 'MT'}, {'status': '1'}, {'street': 'MOHAN LAL GANJ'}, {'sync_time': '2019-04-12 18:03:15'}, {'route_id': '11573'}, {'route_order': '0'}, {'stage': ''}, {'tsm': '12731'}, {'sm': '12217'}, {'route': 'LUCKNOW ROUTE - 1'}, {'sales_rep_id': '12732'}, {'state_id': '689'}, {'state': 'Haryana'}, {'external_id': '724342'}, {'labelId': '371', 'labelName': 'BPM Unique Id', 'value': ''}, {'labelId': '376', 'labelName': 'Test', 'value': ''}, {'id': '10', 'name': 'GSTIN Number'}]
......
推荐阅读
- c# - 如何通过docusign api为另一个用户的帐户创建信封?
- spring-data-elasticsearch - 使用 Spring Reactive Elasticsearch Client 获取错误响应正文
- sql - 如何在 INNER JOINS 后将多列之间的数据过滤到新列中?
- flutter - 有什么方法可以在不启动 Flutter 应用程序的情况下记录信息?
- python - 如何确保 buildozer 可以构建包含 KivyMD 的 .apk
- python - 简单地打印词向量而不是将它们作为数组获取
- java - Spring WebFlux + ReactiveMongoDB,无法保存实体
- spring-boot - Spring Cloud Config with Github repo 使用凭证
- xamarin.forms - 从 View 模型更改 Xamarin 表单中的背景颜色的问题
- laravel-backpack - 使用 Backpack for Laravel 4.1 加载 RolesCrudController 时出错