【问题标题】:AttributeError: Element instance has no attribute '__float__' in PythonAttributeError:元素实例在 Python 中没有属性“__float__”
【发布时间】:2015-06-13 22:20:06
【问题描述】:

运行脚本时出现此错误

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,但我不知道如何解决它。

【问题讨论】:

    标签: python xml django minidom


    【解决方案1】:

    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> 元素中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      相关资源
      最近更新 更多