Skip to main content
 首页 » 编程设计

Python之获取两个标签之间的单词

2025年05月04日10artech

我有这个字符串:

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