我有一堆数据条目,如下所示:
{'formType': 'tax', 'periodEndDate': '2016-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2016, 'label': 'FY2016'}
{'formType': 'tax', 'periodEndDate': '2015-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2015, 'label': 'FY2015'}
{'formType': 'tax', 'periodEndDate': '2014-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2014, 'label': 'FY2014'}
{'formType': 'amend', 'periodEndDate': '2015-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
{'formType': 'amend', 'periodEndDate': '2015-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
{'formType': 'amend', 'periodEndDate': '2014-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
{'formType': 'amend', 'periodEndDate': '2014-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
我想搜索这些数据并设置' periodStartDate'价值截止到前一段时间后一天的日期和期限的日期' (相同的formType)。我很乐意使用日期时间和日期添加等,但我不确定如何交叉引用此文件中的不同行项目来推断periodStartDate。
此外,' formType':'修改'需要设置其“财政年末”。价值取决于使用上述' formType':' tax'之间的年份。键值对。
答案 0 :(得分:3)
我会将每一行导入list of dicts
,然后遍历该列表以使用datetime.timedelta
我将您提供的词汇转换为列表以模拟我的示例。
import datetime
list_of_dicts =[
{'formType': 'tax', 'periodEndDate': '2016-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2016, 'label': 'FY2016'},
{'formType': 'tax', 'periodEndDate': '2015-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2015, 'label': 'FY2015'},
{'formType': 'tax', 'periodEndDate': '2014-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2014, 'label': 'FY2014'},
{'formType': 'amend', 'periodEndDate': '2015-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'},
{'formType': 'amend', 'periodEndDate': '2015-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'},
{'formType': 'amend', 'periodEndDate': '2014-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'},
{'formType': 'amend', 'periodEndDate': '2014-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
]
def searchForYear(year):
for subdict in list_of_dicts:
if str(year) == 'NULL':
print ("Year is NULL")
elif str(year) == str(subdict['fiscalYearEnd']):
if input('Do you want update this row? ') == 'yes':
EndDate = datetime.datetime.strptime((subdict['periodEndDate']),"%Y-%m-%d").date()
StartDate = EndDate + datetime.timedelta(days=1)
subdict['periodStartDate'] = StartDate
print ("StartDate is now ",subdict['periodStartDate'])
else:
print ("Did not update")
else:
print ("Year does not appear in this row")
submitYear = input("Check and update Year: ")
searchForYear(submitYear)
结果应该是这样的:
Check and update Year: 2016
Do you want update this row? yes
StartDate is now 2016-04-01
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row