如何在我的 XML 文件中迭代“<row></row>”标签?
How can I iterate the "<row></row>" tag in my XML file?
下面的代码可以正常工作。但是,生成的 xml 将为每条记录的每一行都标记相同。我需要这个标签是唯一的。我的意图是让标签读取
,
, ... 我已经注释掉了我尝试的内容,但是当我尝试 运行 这个在 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")
或者使用一种字符串格式,例如so-called f-string(需要 python3.6
或更高版本)
xmlData.write(f'<row {rowNum}>\n')
xmlData.write(f'</row {rowNum}>\n')
下面的代码可以正常工作。但是,生成的 xml 将为每条记录的每一行都标记相同。我需要这个标签是唯一的。我的意图是让标签读取
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")
或者使用一种字符串格式,例如so-called f-string(需要 python3.6
或更高版本)
xmlData.write(f'<row {rowNum}>\n')
xmlData.write(f'</row {rowNum}>\n')