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

Pandas调用read_csv读取CSV后用to_xml转XML时报Invalid tag name错误

XML标签名合法性说明

包含空格的标签名确实属于无效XML标签,根据XML 1.0官方规范,合法的XML标签名需满足以下要求:

  • 仅可包含字母、数字、下划线、连字符(-)、点号(.)、冒号(:)
  • 不可包含任何空白字符(空格、制表符、换行符等)
  • 必须以字母、下划线或冒号开头,不可使用数字、连字符作为首字符

你遇到的ValueError: Invalid tag name 'foo bar'报错,就是lxml库校验到待生成的XML标签包含空格,直接拦截了非法格式的生成。


报错原因排查

你的代码中已经指定的root_name、row_name、elem_cols等参数取值都不含空格,出现报错大概率是以下两个原因:

  • 你设置了index=True,如果你的DataFrame索引的名称带空格,导出XML时会把索引作为每个的子节点,以索引名作为标签,就会触发合法性校验报错
  • 你读取的CSV实际列名和你指定的elem_cols参数取值不匹配,列名被解析出了带空格的内容,你可以先执行print(csv_data.columns.tolist())确认实际读取的列名是否正确

修复方案

方案1:不需要导出索引的场景

直接把index参数改为False即可,修改后的to_xml调用代码如下:

csv_data.to_xml(path_or_buffer=output_file, index = False, root_name='products',row_name='item', elem_cols=['post_title','regular_price'], prefix = 'g:', pretty_print=True)

方案2:需要保留索引的场景

在调用to_xml前先把索引重命名为不含空格的合法名称:

# 示例将索引名改为id,可根据需求替换为其他合法名称
csv_data = csv_data.rename_axis('id')
csv_data.to_xml(path_or_buffer=output_file, index = True, root_name='products',row_name='item', elem_cols=['post_title','regular_price'], prefix = 'g:', pretty_print=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:06:02