You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:如何将CSV按每15条记录转换为单个XML文件

Python实现CSV按每15条记录拆分并转XML

下面是针对需求的完整实现代码,注释清晰,适合新手理解和修改:

import csv
import xml.etree.ElementTree as ET
from itertools import islice

def csv_to_split_xml(csv_file_path, batch_size=15):
    # 打开目标CSV文件,用utf-8编码读取(如果你的CSV是其他编码,比如gbk,替换这里)
    with open(csv_file_path, mode='r', encoding='utf-8') as csv_file:
        # 用DictReader读取,可直接通过列名访问字段值
        csv_reader = csv.DictReader(csv_file)
        batch_counter = 1
        
        # 循环分批处理记录
        while True:
            # 读取当前批次的batch_size条记录,islice避免一次性加载全量数据
            current_batch = list(islice(csv_reader, batch_size))
            if not current_batch:
                break  # 没有剩余记录,结束循环
            
            # 创建XML根节点
            root = ET.Element("records")
            
            # 遍历批次内的每条记录,生成XML子元素
            for record in current_batch:
                record_element = ET.SubElement(root, "record")
                # 为每个字段创建对应的XML元素
                for field_name, field_value in record.items():
                    field_element = ET.SubElement(record_element, field_name)
                    field_element.text = field_value
            
            # 格式化XML缩进(Python 3.9+支持,低版本可删除此行)
            ET.indent(root, space="  ", level=0)
            # 生成XML树对象
            xml_tree = ET.ElementTree(root)
            # 定义输出文件名,按批次编号命名(补零保证排序正确)
            output_file_name = f"batch_{batch_counter:03d}.xml"
            # 保存XML文件,写入XML声明
            xml_tree.write(output_file_name, encoding='utf-8', xml_declaration=True)
            
            print(f"已生成文件: {output_file_name}")
            batch_counter += 1

# 替换成你的CSV文件路径,运行函数
csv_to_split_xml("your_data.csv")

关键细节说明

  • 分批读取:用itertools.islice分批读取CSV,适合处理大文件,不会占用过多内存
  • 字段映射:csv.DictReader会自动把CSV表头作为键,直接映射到XML的字段名,无需手动指定
  • XML格式化:ET.indent用来给XML加缩进,让输出更易读;如果你的Python版本低于3.9,可以删掉这行,不影响功能
  • 文件名规范:用batch_counter:03d生成带三位编号的文件名(如batch_001.xml),方便后续排序和查找

新手适配提示

  1. 把代码中的"your_data.csv"替换成你实际的CSV文件路径
  2. 如果CSV文件编码不是utf-8,比如中文常用的gbk,修改open函数里的encoding参数
  3. 若需要自定义XML结构(比如修改根节点名、字段名),直接调整ET.Element和ET.SubElement的参数即可
  4. 测试时可以把batch_size改成2或3,快速验证功能是否正常

内容的提问来源于stack exchange,提问作者PVG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:24:23