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

Python将XML转换为CSV时如何为CSV文件字段添加双引号?

解决方案

首先补全代码缺失的依赖导入,再调整DataFrame.to_csv()的输出参数即可实现需求,核心用到csv模块内置的引用规则常量:

关键修改点

  • 补全缺失的导入:glob、os、csv三个模块
  • 调整to_csv的参数,指定quoting=csv.QUOTE_NONNUMERIC:自动给所有非数值类型的内容(表头、字符串字段)添加双引号,数值类型保持无引号格式

修改后完整代码

import pandas as pd
import xml.etree.ElementTree as ET
import glob
import os
import csv  # 新增导入,用于控制CSV引用规则


def xml_to_csv(path):
    xml_list = []
    print(path)
    for xml_file in glob.glob(path + '/*.xml'):
        tree = ET.parse(xml_file)
        root = tree.getroot()
        for member in root.findall('object'):
            value = (root.find('filename').text,
                     int(root.find('size')[0].text),
                     int(root.find('size')[1].text),
                     member[0].text,
                     int(member[4][0].text),
                     int(member[4][1].text),
                     int(member[4][2].text),
                     int(member[4][3].text)
                     )
            xml_list.append(value)
    column_name = ['image', 'width', 'height', 'name', 'xmin', 'ymin', 'xmax', 'ymax']
    xml_df = pd.DataFrame(xml_list, columns=column_name)
    return xml_df


def main():
    for folder in ['train']:
        image_path = os.path.join(os.getcwd(), ('images/' + folder))
        xml_df = xml_to_csv(image_path)
        # 修改输出参数,指定非数值类型加双引号
        xml_df.to_csv(('images/' + folder + '_labels.csv'), index=None, quoting=csv.QUOTE_NONNUMERIC)
        print('Successfully converted xml to csv.')


main()

效果验证

修改后输出的CSV会完全符合预期:

  • 所有表头字段自动添加双引号
  • 字符串类型字段(image、name)带双引号
  • 数值类型字段(width、height、坐标字段)无引号,保持纯数字格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:45:00