【发布时间】:2022-01-08 17:50:55
【问题描述】:
我使用下面的代码将 XML 转换为 CSV 文件
但结果是: AttributeError: 'NoneType' 对象没有属性 'text'
谁能帮忙?
import xml.etree.ElementTree as Xet
import pandas as pd
cols = ["Id", "UserId", "Name", "Date", "Class", "TagBased"]
rows = []
xmlparse = Xet.parse('Badges.xml')
root = xmlparse.getroot()
for i in root:
Id = i.find("Id").text
userId = i.find("UserId").text
name = i.find("Name").text
date = i.find("Date").text
Class = i.find("Class").text
tagBased = i.find("TagBased").text
rows.append({
"Id": Id,
"UserId": userId,
"Name": name,
"Date": date,
"Class": Class,
"TagBased": tagBased
})
df = pd.DataFrame(rows, columns=cols)
# Writing dataframe to csv
df.to_csv('output.csv')
我的数据如:
<badges>
<row Id="1" UserId="2" Name="Autobiographer" Date="2014-04-17T00:58:09.973" Class="3" TagBased="False" />
<row Id="2890885" UserId="6775155" Name="Yearling" Date="2021-12-05T03:07:26.740" Class="2" TagBased="False" />
<row Id="2890886" UserId="5298879" Name="Yearling" Date="2021-12-05T03:07:26.740" Class="2" TagBased="False" />
</badges>
【问题讨论】:
-
您的 i 节点没有具有其中一个名称的子元素。 docs.python.org/3/library/…。在引用 .text 之前检查 None。
-
我的数据是这样的,怎么办?
-
那些不是子节点,而是节点的属性。您应该能够像这样访问它们:
i.attrib.get("Id")。让我知道它是否有效。请不要在 cmets 中添加其他信息,而是编辑问题! -
成功了,谢谢!
标签: python xml csv converters