如何用Python批量替换XML文件中的指定字符串?
解决XML文件批量替换字符串的问题
你之前的代码只处理了XML元素的文本内容,但XML里的Rom1大概率还存在于元素的属性值里,这就是没替换全的原因。下面是修正后的方案,同时支持单文件和批量处理:
单文件处理代码
import xml.etree.ElementTree as ET def replace_in_xml(file_path, old_str, new_str): tree = ET.parse(file_path) root = tree.getroot() # 遍历所有元素,同时处理文本和属性 for elem in root.iter(): # 处理元素文本内容 if elem.text is not None: elem.text = elem.text.replace(old_str, new_str) # 处理元素的所有属性值 for attr_key in elem.attrib: elem.attrib[attr_key] = elem.attrib[attr_key].replace(old_str, new_str) # 保存修改后的文件(直接覆盖原文件,如需保留原文件可修改路径) tree.write(file_path, encoding='utf-8', xml_declaration=True) # 调用示例 replace_in_xml('Rom1.xml', 'Rom1', 'Rom2')
批量处理目录下所有XML文件
如果要处理数百个文件,用下面的代码遍历指定目录下的所有.xml文件:
import os # 配置参数 target_dir = './你的XML文件目录路径' old_str = 'Rom1' new_str = 'Rom2' # 遍历目录处理文件 for filename in os.listdir(target_dir): if filename.lower().endswith('.xml'): file_path = os.path.join(target_dir, filename) replace_in_xml(file_path, old_str, new_str) print(f"已完成处理:{filename}")
注意事项
- 若不想覆盖原文件,可修改
tree.write的输出路径,比如改成file_path.replace('.xml', '_modified.xml') - 如果XML文件不是utf-8编码,需在
ET.parse和tree.write时对应调整编码参数 - 建议先拿单个测试文件验证效果,再批量执行
内容的提问来源于stack exchange,提问作者Asgeir Bakke
相关产品推荐
相关产品推荐

