如何用Python提取XML指定元素并导出为TXT文件?
解决XML提取指定字段并保存为TXT的问题
我来帮你调整代码,让它精准提取你需要的字段(sitio_id、fecha_alta、imps24blank、estado、url、nombre),并保存成你想要格式的TXT文件。
调整后的完整代码
import xml.etree.ElementTree as ET # 假设sitios2是你从API获取的XML字符串 root = ET.fromstring(sitios2) # 准备存储提取内容的列表 output_lines = [] # 遍历每个sitio元素(支持XML中有多个sitio的情况) for sitio in root.findall('sitio'): # 提取sitio_id(这里用sitio元素的属性,也可以用内部的sitio_id元素文本) sitio_id = sitio.attrib.get('sitio_id') output_lines.append(f'sitio_id="{sitio_id}"') # 提取fecha_alta fecha_alta = sitio.find('fecha_alta').text.strip() if sitio.find('fecha_alta') is not None else '' output_lines.append(f'fecha_alta {fecha_alta}') # 用XPath定位imps24blank的元素并提取值 imps24blank_item = sitio.find(".//item[@id='imps24blank']") imps24blank = imps24blank_item.text.strip() if imps24blank_item is not None else '' output_lines.append(f'imps24blank {imps24blank}') # 提取estado estado = sitio.find('estado').text.strip() if sitio.find('estado') is not None else '' output_lines.append(f'estado {estado}') # 提取url url = sitio.find('url').text.strip() if sitio.find('url') is not None else '' output_lines.append(f'url {url}') # 提取nombre nombre = sitio.find('nombre').text.strip() if sitio.find('nombre') is not None else '' output_lines.append(f'nombre {nombre}') # 多个sitio之间加分隔线(可选) output_lines.append('---') # 移除最后多余的分隔线(如果存在) if output_lines and output_lines[-1] == '---': output_lines.pop() # 将内容写入UTF-8编码的TXT文件 with open('sitios_info.txt', 'w', encoding='utf-8') as f: f.write('\n'.join(output_lines)) print("文件已成功保存为sitios_info.txt")
代码说明
- 用
findall('sitio')遍历所有站点元素,兼容XML包含多个<sitio>的场景 - 通过XPath表达式
.//item[@id='imps24blank']精准定位到目标统计项 - 加入空值判断和
strip()处理,避免因元素缺失或多余空格导致的异常 - 最终生成的TXT文件使用UTF-8编码,确保特殊字符正常显示
生成的TXT内容示例
sitio_id="131997" fecha_alta 2017-06-22 22:38:18 imps24blank 0 estado 1 url https://www.google.com.ar/ nombre google.com.ar
内容的提问来源于stack exchange,提问作者Martin Bouhier
相关产品推荐
相关产品推荐

