【发布时间】:2020-03-30 16:57:12
【问题描述】:
我是 Python 的初学者,并且通过 Pandas 使用数据框。我正在尝试使用xml.dom.minidom 从 XML 文件中提取表格到 Excel 文件中。这是原始表格的样子(注意“自行车”下的黑色条目):
VEHICLE BRAND
Car Mercedes
Bike Kawasaki
Ducati
Truck Ram
我正在尝试从给定的 XML 文件中提取此表:
<Info_Collection>
<Info car="Car">
<V_Collection>
<Brand type="Mercedes"/>
</V_Collection>
</Info>
<Info car="Bike">
<V_Collection>
<Brand type="Kawasaki"/>
<Brand type="Ducati"/>
</V_Collection>
</Info>
<Info car="Truck">
<V_Collection>
<Brand type="Ram"/>
</V_Collection>
</Info>
</Info_Collection>
这是我正在使用的代码:
def main():
x1=[]
x2=[]
doc = xml.dom.minidom.parse('xml_file')
t1 = doc.getElementsByTagName("Info")
t2 = doc.getElementsByTagName("Brand")
for a in t1:
x1.append(tb.getAttribute("car"))
for a in t2:
x2.append(tb.getAttribute("type"))
while len(x1) != len(x2):
x1.append("")
boDF = pd.DataFrame({'VEHICLE': x1, 'BRAND':x2})
boDF.to_excel(writer, sheet_name='Sheet1', index=0, startrow=1)
writer.save()
if __name__ == "__main__":
main()
运行后,输出表如下:
VEHICLE BRAND
Car Mercedes
Bike Kawasaki
Truck Ducati
Ram
谁能帮我弄清楚如何在“自行车”和“卡车”之间插入一个空格?我尝试同时运行两个 for 循环并比较它们的长度以查看它们是否相等,当它们不相等时,将在第一列中添加一个空格。但是,我无法让它工作。我知道我的代码中的 while 循环在第一列的末尾添加了一个空格,但我不知道如何在列内的任何位置添加。
【问题讨论】:
-
感谢您的评论,但是,这些链接仅显示如何从 XML 文件创建数据框。它没有解释如何在列之间添加空格。
-
您使用 minidom 有什么原因吗?您是否检查过程序中各个步骤的数据? ericlippert.com/2014/03/05/how-to-debug-small-programs我也很好奇你为什么要留一个空白单元格。
-
我使用 minidom 是因为我从在线课程中学到的。我还没有尝试使用任何其他方式来提取文件。是的,我已经检查了代码如何在方法的各个部分运行,但无法创建解决此问题的解决方案(不确定我是否正在回答问题,但我会查看链接并尝试实施提示。)添加空白单元格的重点是,当您阅读 excel 文件时,每个单元格都与其对应的单元格对齐。 (根据上表:杜卡迪制造自行车,而不是卡车。因此,“卡车”单元应向下移动一个单元。)
标签: python xml pandas dataframe xml-parsing