您可以简单地尝试将每个内部文本元素转换为浮点数,并忽略任何错误。
import xml.etree.ElementTree as ETtree = ET.parse("temp.txt")root = tree.getroot()nums = []for e in root.itertext(): try: nums.append(float(e)) except ValueError: passprint numsprint len(nums)根据要求,跟踪元素位置的方法可能是效率低下但成功的方法:
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 numstree = ET.parse('temp.txt')nums = extractNumbers('', tree.getroot())print len(nums)print numsfor n in nums: print n[0], n[1]


