Python脚本实现XML标签间空白字符去除求助
去除XML标签间空白字符的Python方案
嘿,刚接触Python就开始处理XML啦,这有两个实用的方法帮你搞定标签间空白字符的问题~
方法一:正则表达式(简单直接,适合规整XML)
如果你的XML结构比较简单(像你给出的例子这样没有复杂属性或嵌套),用正则表达式可以快速解决:
import re original_xml = "<SIMPLE_RETURN> <RESPONSE> <DATETIME>2018-05-09T12:47:24Z</DATETIME> <CODE>2014</CODE> <TEXT>Too many concurrent login(s)</TEXT> </RESPONSE></SIMPLE_RETURN>" # 匹配两个标签之间的所有空白字符(空格、换行、制表符等) cleaned_xml = re.sub(r'>\s+<', '><', original_xml) print(cleaned_xml)
这个正则表达式>\s+<会精准定位到>和<之间的所有空白(\s+表示一个或多个空白字符),然后替换成><,既去掉了标签间的空白,又不会影响标签内部的文本内容(比如<TEXT>里的空格会完整保留)。
方法二:XML解析库(健壮可靠,适合复杂场景)
如果之后你要处理的XML变得更复杂(比如包含属性、CDATA段或者多层嵌套),正则就容易出问题了,这时候用Python标准库的xml.etree.ElementTree更稳妥:
import xml.etree.ElementTree as ET original_xml = "<SIMPLE_RETURN> <RESPONSE> <DATETIME>2018-05-09T12:47:24Z</DATETIME> <CODE>2014</CODE> <TEXT>Too many concurrent login(s)</TEXT> </RESPONSE></SIMPLE_RETURN>" # 解析XML字符串 root = ET.fromstring(original_xml) # 生成无空白的XML字符串,encoding='unicode'确保输出是字符串而非字节 cleaned_xml = ET.tostring(root, encoding='unicode', method='xml') print(cleaned_xml)
ElementTree会正确解析XML的结构,重新生成时自动去掉标签间的空白,完全不用担心破坏XML的语法,是处理XML的标准做法。
内容的提问来源于stack exchange,提问作者Shenali Silva
相关产品推荐
相关产品推荐

