我正试图通过它们制作的年份来过滤XML中的购买列表。问题是日期的格式如下:年/月/日。我使用日期时间库解决了这个问题,但现在我无法使用年份过滤掉自己的购买。
def purchasesPerYear(year):
listPurchases = treeDoc.xpath("//purchase")
for purchases in listPurchases:
nrPurchases = purchases.xpath("count(//purchase)")
date = purchases.xpath("//purchase/@date_of_purchase")[int(nrPurchases)-1]
dateParsed = datetime.strptime(date, "%Y/%m/%d")
if year == dataParsed.year:
for n in range(int(nrPurchases)):
purchaseid = purchases.xpath("@puid")
return purchaseid
else:
purchaseid = purchadses.xpath("//purchase/@puid")
return purchaseid
print(“purchase:”,compraPorAno(2017))
print("data: ", dataParsed)
在此代码中,如果年份存在于任何购买中,或者如果年份不存在,则我或者获得第一次购买。然而,我的第一个购买年份是2016年,所有其他购买年份都是在2017年制作。基本上如果我输入2016年或2017年,我得到的是第一次购买,而不是在输入的一年中进行的每次购买。
<compra coid="CO01" id="U01" data_de_compra="2016/10/15" estado="entregue">
<produto iid="I01" quantidade="1">
<transportadora nome="CTT"/>
</produto>
</compra>
<compra coid="CO02" id="U01" data_de_compra="2017/10/15" estado="emExpedicao">
<produto iid="I03" quantidade="1">
<transportadora nome="SEUR"/>
</produto>
</compra>
<compra coid="CO03" id="U03" data_de_compra="2017/10/20" estado="entregue">
<produto iid="I01" quantidade="1" avaliacao="4">
<transportadora nome="MRW"/>
</produto>
</compra>
<compra coid="CO04" id="U03" data_de_compra="2017/10/20" estado="entregue">
<produto iid="I02" quantidade="1" avaliacao="5">
<transportadora nome="UPS"/>
</produto>
</compra>
答案 0 :(得分:0)
我通过完全改变代码的形成方式来实现这一目标:
listaCompras = treeDoc.xpath("//compra")
for elem in listaCompras:
for n in range(4):
data = elem.xpath("//compra/@data_de_compra")
coid = elem.xpath("//compra/@coid")
compra = [0, 0, 0, 0]
for g in range(4):
dataParsed = [g]
dataParsed = datetime.strptime(data[g], "%Y/%m/%d")
compra[g] = (dataParsed.year, coid[g])
print(compra)
def compraPorAno(ano):
for (a, b) in compra:
if ano == a:
print("ID: ", b)
print(compraPorAno(2017))
如果购买完成年份,此代码会给出购买ID。