gpt4 book ai didi

python - lxml 获取元素的完整扩展名

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:59 25 4
gpt4 key购买 nike

我有以下 xml:

<text>test<br/><br/><a href="/nature/19700707">All you need to know about British birds.</a><br/></text>

我希望设置标签<text>的全部内容至11111

我正在使用 pythong 和 lxml,以下是我的代码:

import nltk
import lxml.etree as le
current_file = '/Users/noor/Dropbox/apps/APIofLife/src/clear_description/bird.rdf'
f = open(current_file,'r')
doc=le.parse(f)
for elem in doc.xpath("//text"):
elem.text = "11111"
f.close()
f = open(current_file,'w')
f.write(le.tostring(doc))
f.close()

但是,运行上述代码后,我的结果是:

<text>11111<br/><br/><a href="/nature/19700707">All you need to know about British birds.</a><br/></text>

我想知道为什么标签的全部内容是<text>尚未更改为11111

最佳答案

根据lxml.etree._Element documentation , text 属性对应于第一个子元素之前的文本。

您需要删除子元素:

>>> import lxml.etree as le
>>>
>>> root = le.fromstring('''<text>test<br/><br/>
... <a href="/nature/19700707">All you need to know about British birds.</a>
... <br/></text>''')
>>> for elem in root.xpath("//text"):
... elem.text = '1111'
... del elem[:] # <----------
...
>>> le.tostring(root)
'<text>1111</text>'

关于python - lxml 获取元素的完整扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com