【lxml】python-lxml把内部标签插入放在外部标签文本的前方

问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值