[英]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.