每年过滤掉物品

时间:2017-12-19 11:13:40

标签: python xml

我正试图通过它们制作的年份来过滤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>

1 个答案:

答案 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。