如何解决尝试运行简单的 ETL 代码时出现 AttributeError
我已经阅读了大量其他线程,但找不到解决方案,因此请感谢任何人就如何解决此问题提供意见!
完成一个 Python 数据工程课程,这个项目是关于网络抓取的。尝试创建从 XML、CSV 和 JSON 文件中提取数据的函数时,我收到下面的“AttributeError”。
AttributeError - 回溯(最近一次调用最后一次) 1 日志(“提取阶段开始”) ----> 2 提取数据 = 提取() 3 log("提取阶段结束") 4 提取数据
在提取() 29 # 最后,处理所有xml文件 30 对于 glob.glob("*.xml") 中的 xmlFile: ---> 31提取的数据=提取的数据。附加(xmlExtract(xmlFile),ignore_index=True) 32 33 返回提取的数据
在 xmlExtract(xmlFile) 15 root = tree.getroot() 16 对于 root 的人: ---> 17 name = person.find("name").text 18 height = float(person.find("height").text) 19 weight = float(person.find("weight").text)
AttributeError: 'nonetype' 对象没有属性 'text'
def xmlExtract(xmlFile):
dframe = pddf(columns=["name","height","weight"])
tree = ET.parse(xmlFile)
root = tree.getroot()
for person in root:
name = person.find("name").text
height = float(person.find("height").text)
weight = float(person.find("weight").text)
dframe = dframe.append({"name":name,"height":height,"weight":weight},ignore_index=True)
return dframe
感谢任何关于从哪里开始的指示。
附言'pdf' 是从 pandas - from pandas import DataFrame as pddf
中独特导入的 pandas.dataframe - 因为我在使用 import pandas as pd
时遇到错误,然后使用 pd.dataframe。
解决方法
错误很明显:
AttributeError: 'NoneType' object has no attribute 'text'
一些对 .find
的调用返回 None
。在调用 None
之前,您必须先检查值是否为 .text
。
def xmlExtract(xmlFile):
dframe = pddf(columns=["name","height","weight"])
tree = ET.parse(xmlFile)
root = tree.getroot()
for person in root:
name = person.find("name").text if person.find("name") else None
height = float(person.find("height").text) if person.find("height") else None
weight = float(person.find("weight").text) if person.find("weight") else None
dframe = dframe.append({"name": name,"height": height,"weight": weight},ignore_index=True)
return dframe
这个代码不是最好的。这只是一个例子。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。