繁体   English   中英

如何使用 Python 将 CSV 文件转换为 XML 格式

[英]How can I convert CSV file into XML format using Python

在此处输入图片说明 到目前为止,我已经导入了 csv 文件并使用 csv writer 选择了字段......现在使用 Python(绝对初学者)将此 file.csv 从 CSV 转换为 XML 的最简单方法是什么?

import csv
with open('file.csv', 'r') as csv_file:
    csv_reader = csv.DictReader(csv_file)

    with open('file.csv', 'w') as new_file:
        fieldnames = ['RECORD_ID', 'FULL_NAME', 'ADDRESS', 'CITY', 'COUNTRY']

        csv_writer = csv.DictWriter(new_file, fieldnames=fieldnames, delimiter='\t')
        csv_writer.writeheader()
        for line in csv_reader:
            csv_writer.writerow(line)

你可以这样做

import xml.etree.ElementTree as ET
import csv

with open('file.csv', 'r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    root = ET.Element('Import')
    with open('file.csv', 'w') as new_file:    
        for line in csv_reader:
            ent = ET.SubElement(root, 'Entity')
            node = ET.SubElement(ent, 'ID')
            node.text = line['RECORD_ID']

            node = ET.SubElement(ent, 'NAME')
            node.text = line['FULL_NAME']

            node = ET.SubElement(ent, 'CITY')
            node.text = line['CITY']

            node = ET.SubElement(ent, 'COUNTRY')
            node.text = line['COUNTRY']

            node = ET.SubElement(ent, 'ADDRESS')
            node.text = line['ADDRESS']

with open('output_file.xml', 'w') as f:
    f.write(ET.dump(root))

这个想法是创建一个根,然后为每一行添加一个将包含您的行的子元素,然后为每一列创建一个子元素到该行并向其添加文本。

试试下面的。 它是@ygrog 代码的轻量级版本

import xml.etree.ElementTree as ET
import csv

mapping = {'ID':'RECORD_ID','NAME':'FULL_NAME','CITY':'CITY','COUNTRY':'COUNTRY','ADDRESS':'ADDRESS'}
with open('file.csv', 'r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    root = ET.Element('Import')
    with open('file.csv', 'w') as new_file:    
        for line in csv_reader:
            ent = ET.SubElement(root, 'Entity')
            for k,v in mapping.items():
              node = ET.SubElement(ent, k)
              node.text = line[v]
with open('output_file.xml', 'w') as f:
  xml_str = ET.tostring(root, encoding='unicode')
  f.write(xml_str)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM