You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用lxml为元素的已有属性追加值而非覆盖?

解决方案

lxml没有提供直接追加属性值的内置方法,正确的做法是先读取现有属性值,拼接新内容后重新设置属性,避免直接覆盖:

  1. 使用element.get(属性名, 默认值)获取当前属性值,设置默认空字符串可以避免属性不存在时返回None导致拼接报错
  2. 将现有值与新值按需要的格式拼接(比如用空格分隔)
  3. 用element.set(属性名, 新值)重新设置属性

代码示例

from lxml import etree

# 解析得到目标元素
para_elem = etree.fromstring('<para animals="cat" />')

# 获取现有属性值,默认空字符串
current_animals = para_elem.get('animals', '')
# 拼接新值,strip()处理初始为空的情况(比如原属性不存在时)
updated_animals = f"{current_animals} dog".strip()
# 重新设置属性
para_elem.set('animals', updated_animals)

# 验证结果
print(etree.tostring(para_elem, encoding='unicode'))

执行后会输出:<para animals="cat dog"/>,完全符合需求。这种方法比字符串操作更可靠,能避免手动处理XML编码等潜在问题。

内容的提问来源于stack exchange,提问作者Wayne Brissette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:02:33