【发布时间】:2017-12-19 22:30:44
【问题描述】:
我正在尝试从 XML 中筛选出购买清单,直到它们被制作的年份。问题是日期格式如下:年/月/日。我使用 datetime 库解决了这个问题,但现在我不能使用年份来过滤自己的购买。
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("购买:", 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>
【问题讨论】:
-
您是否考虑用
pandas读取您的XML文件,然后使用它? -
代码对吗?您将日期保存到
dateParsed,但您正在检查dataParsed -
我正在做一个大学作业,很遗憾我需要用 Python 来做:(
-
这是我发现的从 XML 中提取年份的唯一方法。
-
能否提供 XML 供我们测试?