我有一个XML格式的标记文本。我需要添加标记,即添加标签,以某些字,如果他们出现在文本中。
这就是我试图做到的:
import xml.etree.ElementTree as ET
doc = '''<root><par>An <fr>example</fr> text with key words one and two</par></root>'''
profs=['one','two']
tag='<key>'
tag_cl='</key>'
root = ET.fromstring(doc)
for child in root:
for word in profs:
if word in child.text:
child.text=child.text.replace(word, f'{tag}{word}{tag_cl}')
print(child.text)
如果文本中没有嵌套标记,则此操作有效。如果有一个标签(在这个例子中是'fr'),那么child.text只被认为是第一个标签之前的文本。当然,一定有一些简单的解决方案来完成我所描述的任务。你能给予我点提示吗?
3条答案
按热度按时间lstz6jyr1#
你搜索尾部元素。如有必要,可以为elem.text复制if条件:
输出:
**选项2:**如果你想使用真实的element etree对象而不是html标签,你可以这样做:
输出:
cx6n0qe32#
下面是该任务的XSLT2.0实现。
输入XML
XSLT2.0
输出
qxgroojn3#
你已经很接近了,但是你必须使用lxml而不是ElementTree来实现:
输出应该是您期望的输出。