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

Python解析及写入XML文件时如何保留标签及属性周边原有空格

Python处理XML时保留标签内空格的实现方法

默认的XML解析库(包括Python标准库xml.etree.ElementTree、第三方库lxml)都会默认丢弃无语义空格:包括属性等号前后的空格、标签名与闭合尖括号之间的空格,这就是写入后空格消失的原因。要保留这类空格可以参考以下两种方案:

方案1:使用lxml自定义序列化规则(推荐)

lxml的可配置性更高,通过调整解析和写入参数可以最大程度保留原有格式:

from lxml import etree

# 解析时关闭空白自动移除
parser = etree.XMLParser(remove_blank_text=False)
tree = etree.parse("input.xml", parser)

# 写入时关闭自动格式化,自定义属性输出逻辑
with open("output.xml", "wb") as f:
    # 禁用格式化输出,保留原始节点的空白结构
    f.write(etree.tostring(tree, pretty_print=False, encoding="utf-8"))

如果需要严格固定属性前后的空格格式,可以重写序列化逻辑,自定义属性输出的空格规则即可。

方案2:直接以文本形式处理XML(格式一致性最高)

如果不需要解析XML的节点结构,只需要修改部分节点内容,直接以文本模式读写XML文件即可,完全不会触发解析器的自动格式化:

# 读取原始文件
with open("input.xml", "r", encoding="utf-8") as f:
    content = f.read()

# 按字符串替换修改需要调整的内容,比如修改Amount的值
content = content.replace('<Amount currency = "100" sign = "D" >2000</Amount>', '<Amount currency = "100" sign = "D" >3000</Amount>')

# 直接写入
with open("output.xml", "w", encoding="utf-8") as f:
    f.write(content)

这种方案不会改变原始文件的任何字符,完全保留所有空格、换行等格式。


内容的提问来源于stack exchange,提问作者Krishnakanth kodamalla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:04