python - 更改内部零件或标签内的文本
问题描述
我想用例如替换second_part
或。third_part
bar
parser = etree.XMLParser(remove_comments=True, remove_blank_text=True)
root = etree.fromstring("<p>first_part<lb/>second_part<lb/>third_part</p>", parser=parser)
我们可以轻松获取和更改 first_part:
p.text
# returns 'first_part'
我们还可以检索带有标签的尾部文本:
''.join(ET.tostring(e, 'unicode') for e in root)
# returns '<lb />second_part<lb />third_part'
但我想更改文本。我该怎么做(没有正则表达式,只使用 XMLParser)?
解决方案
您必须更新元素的tail
属性<lb>
。
from lxml import etree
root = etree.fromstring("<p>first_part<lb/>second_part<lb/>third_part</p>")
lb_elements = root.findall("lb")
lb_elements[0].tail = "foo"
lb_elements[1].tail = "bar"
print(etree.tostring(root, encoding="unicode"))
输出:
<p>first_part<lb/>foo<lb/>bar</p>
推荐阅读
- php - 如何正确找到匹配的 php.ini 文件
- javascript - 我的 if else 语句未按预期工作-所有语句的 innerHTML 保持不变
- deep-learning - 为什么转换为 im2col 很快?
- alloy - 如何将一组实例传递给 Alloy Analyzer 的 Evaluator 中的函数或谓词?
- r - 从具有多列的数据表中执行 ANOVA 检验
- dom - 如何使用 XPATH 访问 iframe 的属性/属性?
- java - 将 LocalDateTime 持久化到 DB2 TIMESTAMP 列中
- php - 为什么当我创建一个页面时,它会显示在 wordpress 的导航菜单中?
- r - 对 xts 对象列表执行计算并存储结果
- ruby-on-rails - 如何解决此 Postgresql Invalid Paramater 错误?