Parse and count numeric only xml text including e-00 or e+01

喜你入骨 提交于 2019-11-29 17:38:21

You can simply try to convert each inner text element to a float, and ignore any errors.

import xml.etree.ElementTree as ET

tree = ET.parse("temp.txt")
root = tree.getroot()
nums = []

for e in root.itertext():
    try:
        nums.append(float(e))
    except ValueError:
        pass

print nums
print len(nums)

As requested, a probably inefficient but successful method to keep track of the locations of the elements:

def extractNumbers(path, node):
    nums = []

    path += '/' + node.tag
    if 'name' in node.keys():
        path += '=' + node.attrib['name']

    try:
        num = float(node.text)
        nums.append( (path, num) )
    except (ValueError, TypeError):
        pass

    for e in list(node):
        nums.extend( extractNumbers(path, e) )

    return nums

tree = ET.parse('temp.txt')
nums = extractNumbers('', tree.getroot())
print len(nums)
print nums

for n in nums:
    print n[0], n[1]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!