import os import traceback import ast chList = ['机号', '机型', '发动机', '任务类型', '进港时间', '出港时间', '航班号', '进港起飞', '离港到达', '放行人员', '维修人员', '备注'] chList2 = ['序号', '机位', '机号', '机型', '发动机', '任务类型', '进港时间', '出港时间', '航班号', '进港起飞', '离港到达', '放行人员', '维修人员', '备注'] def getData(): with open('flightlist1.txt','r', encoding='utf-8') as f: text = f.read() data = ast.literal_eval(text) #print(data) dic = {} for key in data: #print(data[key]) #print("B-{}, 机位:{}".format(data[key]['ACNO'], data[key]['BAY'].replace('S', ""))) #print("B-{}, 机位:{}, 放行:{}, 工作者:{}, 机型:{}, " .format(data[key]['ACNO'], data[key]['BAY'], data[key]['FXRY'], data[key]['WXRY'], # data[key]['ACTYPE'])) if data[key]['BAY']!="": if len(data[key]['BAY'])>2: if data[key]['BAY'][0]=="2": if data[key]['BAY'][1]=="0": # print("B-{}, 机位:{}, 放行:{}, 工作者:{}, 机型:{}, " .format(data[key]['ACNO'], data[key]['BAY'], data[key]['FXRY'], data[key]['WXRY'], # data[key]['ACTYPE'])) dic["{}".format(data[key]['BAY'])] = {"bnum":"{}".format(data[key]['ACNO']), "FX":"{}".format(data[key]['FXRY']), "WX":"{}".format(data[key]['WXRY'])} # for i in data[key]: # print(i) # print(data[key][i]) #print(dic) return dic def getData2(): keyList = ['WXRY','TA','TD','FLIGHT_NO','ACTYPE','ARR_CH1','DEP_CH1','BAY','FXRY','ENG_TYPE','ACNO','TASKTYPE','REMARK_BUSINESS'] tasktype = {"AP":"航前", "TR":"短停", "AF":"航后"} dic = {} with open('hbdt.txt','r', encoding='utf-8') as f: text = f.read() data = ast.literal_eval(text) uselly = data['data'] for key in uselly: # for i in key: # print(i) # print(key[i]) # print(key['ACNO']) # print(tasktype[key['TASKTYPE']]) # print(key['TASKSTS']) try: bay = 'BAY' for kl in keyList: if kl not in key: if kl == bay: #print(key) bay = 'BAY_2' if key[bay]=='': bay = 'BAY_1' #print(bay) else: key[kl] = '' #print(key[kl]) dic["{}".format(key[bay])]={'bnum':'{}'.format(key['ACNO']), 'actype':'{}'.format(key['ACTYPE']), 'engtype':'{}'.format(key['ENG_TYPE']), 'tasktype':'{}'.format(tasktype[key['TASKTYPE']]), 'timein':'{}'.format(key['TA']), 'timeout':'{}'.format(key['TD']), 'ftnum':'{}'.format(key['ARR_DEP']), 'pos1':'{}'.format(key['ARR_CH1']), 'pos2':'{}'.format(key['DEP_CH1']), 'FX':'{}'.format(key['FXRY']),'WX':'{}'.format(key['WXRY']), 'remark':'{}'.format(key['REMARK_BUSINESS'])} # print("工作者:{}, 进港时间:{},离港时间:{}, 航班号:{}, 机型:{}, 进港起飞:{},离港到达:{}, 机位:{}, 放行:{}, 发动机类型:{}, 机号:{}, 任务类型:{}, 备注信息:{}" # .format(key['WXRY'], key['TA'], key['TD'],key['ARR_DEP'], key['ACTYPE'], key['ARR_CH1'], key['DEP_CH1'], key[bay], key['FXRY'], key['ENG_TYPE'], key['ACNO'], tasktype[key['TASKTYPE']], key['REMARK_BUSINESS'])) except KeyError as E: print("错误:{}".format(E)) print(key) # if str(E)=="'BAY'": # print( # "工作者:{}, 进港时间:{},离港时间:{}, 航班号:{}, 机型:{}, 进港起飞:{},离港到达:{}, 机位:{}, 放行:{}, 发动机类型:{}, 机号:{}, 任务类型:{}, 备注信息:{}" # .format(key['WXRY'], key['TA'], key['TD'], key['FLIGHT_NO'], key['ACTYPE'], key['ARR_CH1'], # key['DEP_CH1'], key['BAY_2'], key['FXRY'], key['ENG_TYPE'], key['ACNO'], key['TASKTYPE'], key['REMARK_BUSINESS'])) #print(dic) return dic def getAllData(): tasktype = {"AP": "航前", "TR": "短停", "AF": "航后"} keyList = ['WXRY', 'TA', 'TD', 'FLIGHT_NO', 'ACTYPE', 'ARR_CH1', 'DEP_CH1', 'BAY', 'FXRY', 'ENG_TYPE', 'ACNO', 'TASKTYPE', 'REMARK_BUSINESS'] with open('hbdt.txt','r', encoding='utf-8') as f: text = f.read() data = ast.literal_eval(text) uselly = data['data'] dic = {} number = 0 for key in uselly: number +=1 bay = 'BAY' for kl in keyList: if kl not in key: if kl == bay: # print(key) bay = 'BAY_2' if key[bay] == '': bay = 'BAY_1' # print(bay) else: key[kl] = '' # print(key[kl]) dic[number] = {'bay':'{}'.format(key[bay]),'bnum':'{}'.format(key['ACNO']), 'actype':'{}'.format(key['ACTYPE']), 'engtype':'{}'.format(key['ENG_TYPE']), 'tasktype':'{}'.format(tasktype[key['TASKTYPE']]), 'timein':'{}'.format(key['TA']), 'timeout':'{}'.format(key['TD']), 'ftnum':'{}'.format(key['ARR_DEP']), 'pos1':'{}'.format(key['ARR_CH1']), 'pos2':'{}'.format(key['DEP_CH1']), 'FX':'{}'.format(key['FXRY']),'WX':'{}'.format(key['WXRY']), 'remark':'{}'.format(key['REMARK_BUSINESS'])} #print(dic) return dic if __name__ == '__main__': dic = getData2() print(dic) getAllData()