我有这个字符串:
História do RFID A tecnologia de <EM ID="hub-30518" CATEG="PESSOA">RFID </EM>tem suas raízes nos sistemas de radares
我想得到 CATEG="(what I want to get)" 之间的内容, 和 ">(what I want to get)</EM> 之间,在这种情况下,结果将是 PESSOA和 RFID .
我有的是
pega = re.sub(r'<[^C]*(CATEG="[^"]+")[^>]*>', r'<\1>', text)
但结果只有
História do RFID A tecnologia de RFID < tem suas raízes nos sistemas de radares
我该怎么做?
请您参考如下方法:
您可以使用内置的 minidom 模块轻松解析它:
from xml.dom import minidom
xml = '<xml>História do RFID A tecnologia de <EM ID="hub-30518" CATEG="PESSOA">RFID </EM>tem suas raízes nos sistemas de radares</xml>'
dom = minidom.parseString(xml)
em = dom.getElementsByTagName('EM')[0]
categ = em.getAttribute('CATEG')
text = " ".join(t.nodeValue for t in em.childNodes if t.nodeType == t.TEXT_NODE)
或者使用内置 ElementTree 模块的更简洁的方法:
from xml.etree import ElementTree
xml = '<xml>História do RFID A tecnologia de <EM ID="hub-30518" CATEG="PESSOA">RFID </EM>tem suas raízes nos sistemas de radares</xml>'
tree = ElementTree.fromstring(xml)
em = tree.find('EM')
categ = em.attrib['CATEG']
text = em.text
