XML怎么转换成CSV格式 Python实现XML转CSV

6次阅读

pythonxmlcsv需先用xml.etree.elementtree解析,提取字段时处理属性和嵌套,再用csv模块安全写入;复杂场景可选lxml或pandas辅助。

XML怎么转换成CSV格式 Python实现XML转CSV

用 Python 将 XML 转成 CSV,核心是先解析 XML 结构,再按行提取字段写入 CSV。关键在于理解 XML 的嵌套层级和重复节点,避免漏数据或格式错乱。

用 xml.etree.ElementTree 解析基础 XML

Python 标准库 xml.etree.ElementTree 足够处理大多数扁平或中等复杂度的 XML。适合有明确根节点、重复子节点(如多条 <record></record>)的结构。

  • ET.parse() 加载文件,或 ET.fromstring() 加载字符串
  • 定位所有目标记录节点,例如 root.findall('item')
  • 对每个节点,用 .findtext('field_name') 提取文本,支持默认值(如 findtext('price', '0.0')

处理带属性和嵌套的 XML

如果 XML 含属性(如 <product id="101"></product>)或深层嵌套(如 <address><city>Beijing</city></address>),需手动拼接路径或提取属性。

  • 获取属性:elem.get('id')elem.attrib['id']
  • 访问嵌套字段:elem.find('address/city').text if elem.find('address/city') is not None else ''
  • 推荐先遍历一遍样本,确认字段是否存在,避免 AttributeError

csv 模块安全写入 CSV 文件

别用字符串拼接写 CSV,容易出引号、逗号、换行问题。直接用 csv.writercsv.DictWriter

立即学习Python免费学习笔记(深入)”;

  • 若字段固定且顺序明确,用 writer.writerow([val1, val2, ...])
  • 若字段名来自 XML(如每个 <record></record><name></name><age></age>),建议构建字典后用 DictWriter,自动处理转义
  • 打开文件务必加 newline='' 参数(windows 下尤其重要),否则会多空行

遇到复杂 XML?考虑 lxml 或 pandas

当 XML 层级深、命名空间多、或需 XPath 精确定位时,lxml 更可靠;若数据已能转成列表字典,pandas.DataFrame.to_csv() 可一键导出,自带编码和缺失值处理。

  • pip install lxml 后可用 etree.XPath 写类似 //book/author/text() 的表达式
  • 用 pandas:先收集所有记录为 list[dict],再 pd.DataFrame(data).to_csv('out.csv', index=False, encoding='utf-8-sig')
  • 注意:pandas 不原生解析 XML,仍需 ElementTree 或 lxml 做前置提取

不复杂但容易忽略细节:字段缺失时填空字符串而非 None,中文注意保存为 UTF-8 并加 bom(用 encoding='utf-8-sig'),重复标签要统一提取逻辑。写完用 excel 或记事本打开验证格式是否正常。

text=ZqhQzanResources