Python ElementT中不区分大小写的findall

2024-04-29 09:14:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须解析标记名在任何情况下都可能存在的XML(mixed、upper、lower等),而且我不知道前面会是什么情况。我怎样才能使findall在ElementTree中完全不区分大小写?在

   # Does not work
   variables = message.findall("VaRiAbLE")

Tags: 标记messagenot情况xmlvariablesvariableupper
2条回答

用正则表达式来拯救。注意,这在性能方面可能很糟糕,但在从元素中提取XML属性方面非常出色。在

def getInsensitiveAttrbiute(element, key) :

   keyRegex = re.compile(key, re.IGNORECASE)
   for key in element.attrib.keys() :
       if keyRegex.match(key) :
           return element.attrib[key]
   raise KeyError


element = ET.fromstring('<FOO src="BAR" />')
print getInsensitiveAttrbiute(element, "sRc")

您只需从树中获取字符串,将其小写,然后重新生成树。那么它应该是可解析的

import xml.etree.ElementTree as ET
def to_parseable(tree):
    t = ET.tostring(tree)
    t = t.lower()
    return ET.fromstring(t)

相关问题 更多 >