下面的代码将正常工作。但是,生成的xml将使每个记录的每一行都有相同的标记。我需要这个标签唯一。我的意图是让标签读取<第1行>第1行><;第2行>;我已经注释了我的尝试,但我得到一个类型错误,当我试图在python中运行这个。有人知道解决这个问题的方法吗?
import csv
csvFile = 'BySystem.csv'
xmlFile = 'BySystem.xml'
csvData = csv.reader(open(csvFile))
xmlData = open(xmlFile, 'w')
xmlData.write('<?xml version="1.0"?>' + "n")
rowNum = 0
for row in csvData:
if rowNum == 0:
tags = row
# replace spaces w/ underscores in tag names
for i in range(len(tags)):
tags[i] = tags[i].replace(' ', '_')
else:
#xmlData.write('<row ' + rowNum + '>' + "n")
xmlData.write('<row>' + "n")
for i in range(len(tags)):
xmlData.write(' ' + '<' + tags[i] + '>'
+ row[i] + '</' + tags[i] + '>' + "n")
#xmlData.write('</row ' + rowNum + '>' + "n")
xmlData.write('</row>' + "n")
rowNum +=1
xmlData.write('</csv_data>' + "n")
xmlData.close()
rowNum
是int
,您不能简单地将str
与int
连接,或者在连接之前将int
转换为str
,即替换
xmlData.write('<row ' + rowNum + '>' + "n")
xmlData.write('</row ' + rowNum + '>' + "n")
使用
xmlData.write('<row ' + str(rowNum) + '>' + "n")
xmlData.write('</row ' + str(rowNum) + '>' + "n")
或使用一种字符串格式,例如所谓的f-string(需要python3.6
或更新版本)
xmlData.write(f'<row {rowNum}>n')
xmlData.write(f'</row {rowNum}>n')