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-\x08\x0b\x0c\x0e-\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节点的对应关系,再注意编码和特殊字符即可。










