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

使用Python/ElementTree/pandas将XML转CSV时如何保留账号前导零

问题原因

  • pandas创建DataFrame时会自动推断列数据类型,纯数字组成的账号会被识别为整数类型,自动丢失前导零
  • 你看到的右对齐是Excel/WPS等表格软件打开CSV时,对数值类型的默认展示效果,CSV本身是纯文本文件没有对齐属性,只要把账号列强制设为字符串类型,软件打开时就会默认左对齐,同时保留前导零

修改后的脚本

import pandas as pd
import xml.etree.ElementTree as ET

# 解析XML文件获取根节点
xml_file = "C:\\Python Scripts\\test.xml"
csv_file = "C:\\Python Scripts\\test.csv"
xml_tree = ET.parse(xml_file)
root = xml_tree.getroot()

# 解析XML节点转换为字典列表
get_range = lambda col: range(len(col))
l = [{r[i].tag:r[i].text for i in get_range(r)} for r in root]
# 创建DataFrame时指定AcctNr列为字符串类型,避免自动推断为数值
df = pd.DataFrame.from_dict(l, dtype={"AcctNr": str})
# 导出CSV,index=False可去掉默认生成的索引列,utf-8-sig编码避免Windows下Excel打开乱码
df.to_csv(csv_file, index=False, encoding='utf-8-sig')

补充说明

如果处理的XML字段不固定,无法提前指定账号列名,可以全局关闭类型推断,所有列都按原始字符串存储:

df = pd.DataFrame.from_dict(l, dtype=str)

用你提供的测试XML运行修改后的脚本,输出的CSV中AcctNr列会完整保留007,用表格工具打开时默认靠左对齐,不影响原有转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:03