如何使用python从csv到xml的单个单元格中提取多个值



为了soap api的目的,我试图将csv转换为xml,但我需要一些从单个字段中提取多个值,并将这些值中的每一个填充到xml文件中相应的字段中。

我的csv样本看起来像:

81303~E8889~81300~7295~71942,AR,West High

我的代码看起来像这样:

import csv
print('writing xml')
file_reader = csv.reader(open('test_csv_python.csv', 'r'), delimiter = ',')
xml_file = open('student_data.xml', 'w')
xml_file.write('<?xml version="1.0" encoding="UTF-8"?>' 'n')
xml_file.write('<sdistrict>' 'n')
for row in file_reader:
xml_file.write('    ' + '<citycodes>' 'n')
xml_file.write('    ' + '   ' + '<distnumber>' + row[0].split('~') + '</distnumber>' 'n')
xml_file.write('    ' + '</citycodes>' 'n')
xml_file.write('    ' + '<clientid>CUSTOM_VALUE</clientid>' 'n')
xml_file.write('</sdistrict>')
xml_file.close()

我要找的是这样的东西:

<sdistricts>
<citycodes>
<distnumber>129</distnumber>
<distnumber>118</distnumber>
<distnumber>576</distnumber>
<distnumber>498</distnumber>
<distnumber>332</distnumber>
</citycodes>
</sdistricts>

如何拆分该特定行中的数据?我需要在波浪号上分开。

使用.split('~')会出现以下错误:TypeError: can only concatenate str (not "list") to str

您需要添加一个内部循环来处理拆分操作的一个或多个结果。错误来自于尝试将字符串(XML标记(和列表(拆分的结果(合并。

distnumbers = 'n'.join([f'<distnumber>{item}</distnumber>'
for item in row[0].split('~')])

顺便说一句,这似乎是构建XML的一种不合理且脆弱的方式。我会构建一个python数据结构,然后使用XML(标准库(、dicttoxml或自定义函数等库一次性转换为XML。

最新更新