AttributeError: Element instance has no attribute '__float__' in Python
AttributeError: Element instance has no attribute '__float__' in Python
我在 运行 我的脚本
时收到此错误
AttributeError: Element instance has no attribute '__float__'
我的代码如下所示:
def populate():
parsedfiles = minidom.parse('C:\Users\User\Downloads\New folder\StreetTrees_ArbutusRidge.xml')
treelist = parsedfiles.getElementsByTagName('StreetTree')
for alltrees in treelist:
treeId = alltrees.getAttribute('TreeID')
neighbourhood = alltrees.getElementsByTagName('NeighbourhoodName')
commonName = alltrees.getElementsByTagName('CommonName')
diameter = alltrees.getElementsByTagName('Diameter')[0]
diameter = float(diameter)
streetNumber = alltrees.getElementsByTagName('CivicNumber')
street = alltrees.getElementsByTagName('StdStreet')
lat = 0
lon = 0
add_tree(treeId=treeId, neighbourhood=neighbourhood, commonName=commonName,
diameter=diameter, streetNumber=streetNumber, street=street, lat=0, lon=0)
我想我误解了 diameter
但我不知道如何解决它。
diameter
是一个 DOM Element
:
diameter = alltrees.getElementsByTagName('Diameter')[0]
它不能直接转换为浮点数,因为那不是文本数据;您可能希望文本 包含在元素 :
中
diameter = alltrees.getElementsByTagName('Diameter')[0]
diameter = float(diameter.firstChild.nodeValue)
请注意,W3C DOM 使用起来相当痛苦;你可能想研究更多 Pythonic ElementTree API 而不是:
parsedfiles = etree.parse(r'C:\Users\User\Downloads\New folder\StreetTrees_ArbutusRidge.xml')
for alltrees in parsedfiles.findall('.//StreetTree'):
treeId = alltrees. attrib['TreeID']
neighbourhood = alltrees.findall('NeighbourhoodName')
commonName = alltrees.findall('CommonName')
diameter = float(alltrees.find('Diameter').text)
streetNumber = alltrees.findall('CivicNumber')
street = alltrees.findall('StdStreet')
add_tree(treeId=treeId, neighbourhood=neighbourhood, commonName=commonName,
diameter=diameter, streetNumber=streetNumber, street=street,
lat=0, lon=0)
我假设您要查找的各种元素直接包含在 <StreetTree>
元素中。
我在 运行 我的脚本
时收到此错误AttributeError: Element instance has no attribute '__float__'
我的代码如下所示:
def populate():
parsedfiles = minidom.parse('C:\Users\User\Downloads\New folder\StreetTrees_ArbutusRidge.xml')
treelist = parsedfiles.getElementsByTagName('StreetTree')
for alltrees in treelist:
treeId = alltrees.getAttribute('TreeID')
neighbourhood = alltrees.getElementsByTagName('NeighbourhoodName')
commonName = alltrees.getElementsByTagName('CommonName')
diameter = alltrees.getElementsByTagName('Diameter')[0]
diameter = float(diameter)
streetNumber = alltrees.getElementsByTagName('CivicNumber')
street = alltrees.getElementsByTagName('StdStreet')
lat = 0
lon = 0
add_tree(treeId=treeId, neighbourhood=neighbourhood, commonName=commonName,
diameter=diameter, streetNumber=streetNumber, street=street, lat=0, lon=0)
我想我误解了 diameter
但我不知道如何解决它。
diameter
是一个 DOM Element
:
diameter = alltrees.getElementsByTagName('Diameter')[0]
它不能直接转换为浮点数,因为那不是文本数据;您可能希望文本 包含在元素 :
中diameter = alltrees.getElementsByTagName('Diameter')[0]
diameter = float(diameter.firstChild.nodeValue)
请注意,W3C DOM 使用起来相当痛苦;你可能想研究更多 Pythonic ElementTree API 而不是:
parsedfiles = etree.parse(r'C:\Users\User\Downloads\New folder\StreetTrees_ArbutusRidge.xml')
for alltrees in parsedfiles.findall('.//StreetTree'):
treeId = alltrees. attrib['TreeID']
neighbourhood = alltrees.findall('NeighbourhoodName')
commonName = alltrees.findall('CommonName')
diameter = float(alltrees.find('Diameter').text)
streetNumber = alltrees.findall('CivicNumber')
street = alltrees.findall('StdStreet')
add_tree(treeId=treeId, neighbourhood=neighbourhood, commonName=commonName,
diameter=diameter, streetNumber=streetNumber, street=street,
lat=0, lon=0)
我假设您要查找的各种元素直接包含在 <StreetTree>
元素中。