我使用xpath和lxml来解析XML文件。我使用format来增加item元素item [{}]中的值,这样我就可以从第一个元素2nd获取数据,依此类推。我根据// items / item元素出现在XML文件中的次数进行循环,这是有效的。当我到达元组中的最后一项时,我将z增加1.
问题: 我无法想象如何在这个for循环之外分配元组值,并且仍然使用format来增加z的值。如果我在for循环外定义元组,则z总是等于1.它如图所示,但我不喜欢它。
x = 0
y = 1
z = 1
for field in xrange(1, 3):
dataFields = \
(("itemType" , "//items/item[{}]//@itemType".format(z)),
("itemClass" , "//items/item[{}]//@itemClass".format(z)),)
currentData = dataFields[x][y]
try:
r = tree.xpath(currentData)[0]
except:
r = ""
f = open(dataOutputFile, 'a')
f.write(str(r) + "\t")
f.close()
x += 1
if "itemClass" in currentData:
z += 1