文章目录
- 问题
- 解决方案
- 参考链接
问题
在 python
中使用 lxml
库编辑 html 文件时,有一个外部标签和一个内部标签,总是无法将内部标签放在外部标签文本的前方,即:
from lxml import etree# 定义外部标签
out_tag = etree.Element("out")
out_tag.text = "外部文本"# 定义内部标签
in_tag = etree.Element("in")
in_tag.text = "[1]"# 内部标签插入外部标签中
out_tag.insert(0, in_tag)# 想要的效果:<out><in>[1]</in>外部文本</out>
# 实际的效果:<out>外部文本<in>[1]</in></out>
解决方案
在代码末尾添加如下操作即可
# 将外部标签的文本链接到内部标签尾部
in_tag.tail = out_tag.text
# 将外部标签的文本清空
out_tag.text = ""
修改后整体代码如下:
from lxml import etree# 定义外部标签
out_tag = etree.Element("out")
out_tag.text = "外部文本"# 定义内部标签
in_tag = etree.Element("in")
in_tag.text = "[1]"# 内部标签插入外部标签中
out_tag.insert(0, in_tag)# 将外部标签的文本链接到内部标签尾部
in_tag.tail = out_tag.text
# 将外部标签的文本清空
out_tag.text = ""# 最终的效果:<out><in>[1]</in>外部文本</out>
参考链接
python - Add an element before text with lxml - Stack Overflow
https://stackoverflow.com/questions/31951889/lxml-etree-insert-elements-into-element-text