如何用Python移除XML标签外的无效<、>字符?
如何用Python移除XML中不属于标签的'<'和'>'字符
问题场景
你有如下无效XML:
<tag>test ,test <adjs@gmail.com></tag>
该XML无效的原因是文本内容中包含了不属于合法标签的<和>,需要在保留原有XML标签的前提下,移除这些多余字符。
解决方案
可以通过正则表达式精准匹配标签之间的文本内容,仅对这些文本中的<和>进行移除操作,代码实现如下:
import re # 读取XML文件内容 with open('file.xml', 'r', encoding='utf-8') as file: xml_content = file.read() # 清理非标签内的<和>字符 def remove_invalid_characters(xml_text): # 匹配标签闭合>到下一个标签开启<之间的文本内容 return re.sub(r'>([^<]+)<', lambda match: '>' + match.group(1).replace('<', '').replace('>', '') + '<', xml_text) # 执行清理操作 cleaned_xml_content = remove_invalid_characters(xml_content) # 将清理后的内容写入新文件 with open('file_cleaned.xml', 'w', encoding='utf-8') as file: file.write(cleaned_xml_content) print("已移除标签内容中的无效'<', '>'字符。")
代码说明
- 正则表达式
>([^<]+)<:精准匹配两个标签之间的文本片段(即>之后、<之前的所有内容),确保只处理标签外的文本。 - lambda替换逻辑:对匹配到的文本部分(
match.group(1))移除所有<和>,再拼接回前后的标签符号,保证原有标签不受影响。
内容的提问来源于stack exchange,提问作者xcostal
相关产品推荐
相关产品推荐

