gpt4 book ai didi

python - 将自定义 XML 解析为 JSON 或 Pandas DataFrame。 (Python)

转载 作者:太空宇宙 更新时间:2023-11-03 16:12:39 32 4
gpt4 key购买 nike

以下是我的xml文档。

<BizTalk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Body>
<QUEUE>
<FILTER FILTERNAME="CorrectAddress" VALUE="1" />
<FILTER FILTERNAME="DaysSinceLastTracking" VALUE="0" />
<FILTER FILTERNAME="DaysSinceShipped" VALUE="3" />
<FILTER FILTERNAME="DaysUntilDelivered" VALUE="735101" />
<FILTER FILTERNAME="DeliveryStatus" VALUE="IN_TRANSIT" />
<FILTER FILTERNAME="Division" VALUE="71" />
<FILTER FILTERNAME="EmptyBox" VALUE="0" />
<FILTER FILTERNAME="FedVendInstructions" VALUE="" />
<FILTER FILTERNAME="ItemDescription" VALUE="bla bla bla" />
<FILTER FILTERNAME="ItemIssue" VALUE="Damaged" />
<FILTER FILTERNAME="ItemValue" VALUE="50" />
<FILTER FILTERNAME="PiecedSet" VALUE="0" />
<FILTER FILTERNAME="HasProofOfDelivery" VALUE="0" />
<FILTER FILTERNAME="RecievedPOD" VALUE="0" />
<FILTER FILTERNAME="RequestedAction" VALUE="Reship" />
<FILTER FILTERNAME="HasReturntracking" VALUE="0" />
<FILTER FILTERNAME="IsStandardFillLocation" VALUE="1" />
<FILTER FILTERNAME="Tampered" VALUE="0" />
<FILTER FILTERNAME="HasTracking" VALUE="1" />
<FILTER FILTERNAME="ShortName" VALUE="BDD" />
<FILTER FILTERNAME="IsBOPS" VALUE="0" />
<FILTER FILTERNAME="WrongItemType" VALUE="" />
</QUEUE>
<RESPONSEDATA>
<ITEMS>
<DATA CanReOrder="1" UPC="xxxxxxx" Quantity="1" LineNumber="1" Description="bla bla bla" />
</ITEMS>
<DATA ITEM="Reservation" VALUE="????????" />
<DATA ITEM="ShipmentNumber" VALUE="1" />
<DATA ITEM="ContactedBy" VALUE="Shipping Customer" />
<DATA ITEM="PackageRecieved" VALUE="1" />
<DATA ITEM="CheckedEverywhere" VALUE="0" />
</RESPONSEDATA>

如何将此自定义 XML 转换为 Pandas DataFrame?

我使用 xmljson 尝试了一些预定义的转换,这会抛出错误“str 对象没有属性标记”

我尝试使用 ELementTree 并将元素树对象列表传递给 Pandas,它会抛出空的 Dataframe:

etree = ET.fromstring(xml_data)
df = pd.DataFrame(list(etree))
print(df)

我目前计划编写自定义解析器,它将 FilterName 作为列名称,将 Value 作为其字段,但这是硬编码。我想以后避免这种事情,好像添加更多字段,我必须手动添加它们,这很麻烦。

有什么方法可以迭代每一行(可以使用 Loop with Open 来完成)。并动态地将列添加到 Pandas DataFrame 中?

或者有什么有效的方法吗?

注意:我检查了 W3Schools 上 XML 的有效性它说未发现错误,所以我相信 XML 是有效的。

谢谢

最佳答案

酷,我找到了解决这个问题的方法。我做了以下事情:

df = pd.DataFrame()

etree = ET.fromstring(xml_data)
# root = etree.getroot()
for node in etree.findall('.//FILTER'):
parent = node.attrib.get('FILTERNAME')
child = node.attrib.get('VALUE')

col_name = parent
val = child

df[col_name] = [val]

打印(df)

只是想发帖,以便任何遇到类似问题的人都能有所帮助。谢谢

关于python - 将自定义 XML 解析为 JSON 或 Pandas DataFrame。 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148524/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com