希望有人能帮我一把。我有一个嵌套的json文件,我正在尝试计算该文件的两行之间的年龄差异,仅日期格式为mm/yyyy的start_date和end_date。所以我尝试将它拆分,这样我就可以计算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)发布于 2021-11-11 01:37:26
我认为这些是你想要的条件:
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 > 10https://stackoverflow.com/questions/69922186
复制相似问题