Python 将 CSV 转 XML 可用 csv 模块和 xml.etree.ElementTree 实现:用 DictReader 读取为字典,ElementTree 构建节点并自动转义特殊字符,空值处理为留空标签或 ”N/A”,pandas 适用于复杂映射与美化输出。

Python 将 CSV 数据转换为 XML 格式,核心是读取 CSV 内容、按行构造 XML 结构、写入文件。关键在于合理设计 XML 标签名、处理特殊字符(如 & 等)、保持数据完整性。
用 csv 模块读取 + xml.etree.ElementTree 生成 XML
这是最轻量、无需额外安装包的方式,适合结构清晰的 CSV 文件。
- 用 csv.DictReader 逐行读取,每行自动转为字典,键为列名,值为对应字段
- 用 xml.etree.ElementTree 创建根节点(如
),再为每行添加子节点(如),内部嵌套字段节点(如)Alice - 注意:ElementTree 会自动转义
、>、&等字符,无需手动处理 - 最后调用
tree.write("output.xml", encoding="utf-8", xml_declaration=True)保存
处理含空值、引号或换行符的 CSV
真实 CSV 常有缺失值、多行文本或带双引号的字段,需稍作预处理。
- DictReader 默认能正确解析被双引号包裹的含逗号 / 换行字段,无需额外操作
- 空值(如空字符串或
None)可统一转为"N/A"或留空标签(),避免生成这种冗余结构 - 若某字段含非法 XML 字符(如控制字符),可用正则清理:
re.sub(r'[x00-x08x0bx0cx0e-x1f]', '', text)
用 pandas + 自定义 XML 生成函数(适合复杂映射)
当需要重命名字段、合并列、添加固定属性或分层结构时,pandas 更灵活。
立即学习“Python 免费学习笔记(深入)”;
- 先用
pd.read_csv("input.csv")加载,可指定dtype=str避免数字被误转 - 遍历 DataFrame 行:
for _, row in df.iterrows():,手动构建每个,支持动态属性和嵌套逻辑- ……
- 例如:把
first_name和last_name拼成John Doe - 最后用
xml.dom.minidom美化输出(非必需,但提升可读性)
基本上就这些。不用第三方库就能搞定,重点是理清 CSV 列与 XML 节点的对应关系,再注意 编码 和特殊字符即可。