0

希望有人帮助我。我有一个嵌套的 json 文件,我正在尝试计算文件两行之间的年龄差异,即 start_date 和 end_date,日期格式仅为 mm/yyyy。所以我试图拆分它,这样我就可以计算 end_date 和 start_date 之间的年份差异,如果超过 10 年,我添加到另一个列表中。

这是我下面的代码,但它打印一个空列表,我不知道如何修复它。任何提示或方向将不胜感激

哦...我必须使用默认的 python 库,所以即使 pandas 会更容易,我也不能使用它。

remove_card=[] 

def datebreakdown(data_file):
    expr1 = data_file['Credit Card']['start_date']
    expr2 = data_file['Credit Card']['end_date']
    breakdown1 = expr1.split('/') 
    breakdown2 = expr2.split('/')
    card_month = int(breakdown1[0]) - int(breakdown2[0])
    card_year= int(breakdown1[1]) - int(breakdown2[1])
    if card_year >= 10:
        return True
    elif card_year == 10 and card_year > 0:
        return True
    else:
        return False

for line in data_json: #data_json is name of the json file. 
    if datebreakdown(data_file) == True:
        remove_card.append(data_file)
4

1 回答 1

0

我认为这些是您想要的条件:

    if card_year > 10:
        return True
    elif card_year == 10 and card_month > 0:
        return True
    else:
        return False

第一个条件应该是严格>的,不是>=的。第二个条件应该比较年份差正好为 10 的月份。

另一个问题是您以错误的顺序减去日期。你从开始减去结束,所以它总是负数。所以这些减法应该是:

    card_month = int(breakdown2[1]) - int(breakdown1[0])
    card_year= int(breakdown2[1]) - int(breakdown1[1])
def datebreakdown(data_file):
    expr1 = data_file['Credit Card']['start_date']
    expr2 = data_file['Credit Card']['end_date']
    year1, month1 = expr1.split('/') 
    year2, month2 = expr2.split('/')
    start_date = int(year1) + int(month1)/12
    end_date = int(year2) + int(month2)/12
    return end_date - start_date > 10

演示

于 2021-11-11T01:37:25.620 回答