/Amadeus-PNR

Amadeus PNR 文本解析

Primary LanguageGo

Amadeus PNR 文本解析

通过PNR的规则,对文本进行Split和Regexp操作,格式化输出乘客、行程信息

输入PNR编码如下:

--- TST RLR SFP ---                                                             
	RP/ONOOOOOOO /ONOOOOOOO            B0/GS   1MAR18/1224Z   OUHEXE                 
	ONOOOOOOO/2045LW/1MAR18                                                         
	  1.CHEN/LIXIN   2.CHEN/OUXING   3.MA/GERRY YEN                            
	  4.MA/JASON MSTR(CHD/21JUN10)   5.MA/TIANYI                            
	  6  HU7955 I 13JUL 5 PVGSEA HK5  1355 0935  13JUL  E  CA/PB6814                
	  7  HU7956 I 30JUL 1 SEAPVG HK5  1200 1500  31JUL  E  CA/PB6814                
	  8 APE OP@XXXXX.CN                                                 
	  9 TK PAX OK01MAR/ONT1S212G//ETHU/S6-7/P1-3,5                                  
	 10 TK OK01MAR/ONT1S212G//ETHU                                                  
	 11 SSR CHLD HU HK1 21JUN10/P4                                                  
	 12 SSR ADPI 1A KK1 HU7955 REQ SEC FLT PSGR DATA 72 HBD FOR ALL                 
		   PSGRS                                                                    
	 13 SSR ADPI 1A HK1 HU7956 REQ SEC FLT PSGR DATA 72 HBD FOR ALL                 
		   PSGRS                                                                    
	 14 SSR OTHS 1A PLS REMOVING HU HX SEGMENTS 24 HOURS BEFORE                     
		   DEPARTURETO AVOID ADM PENALTY                                            
	 15 SSR ADTK 1A BY ONT11MAR18/0300 OR CXL HU7955 I13JUL                         
	 16 SSR DOCS HU HK1 ////21JUN10/M//MA/JASON/P4                           
	 17 SSR DOCS HU HK1 ////10SEP69/F//15APR19/CHEN/OUXING/P2                      
	 18 SSR DOCS HU HK1 ////20NOV68/M//16MAY26/MA/TINYI/P5                         
	 19 SSR DOCS HU HK1 ////23SEP38/F//11DEC18/CHEN/LIXIN/P1                                                                              
	 20 SSR DOCS HU HK1 ////28APR04/M//28DEC22/MA/GERRYYEN/P3                    
	 21 OSI HU CTCT 15232971626                                                     
	 22 OSI HU CTCM 18686122446/P1/2/3/4/5                                          
	 23 RC ONT1S212G-W/CHG1500CNY CXL2000CNY 2PC                                    
	 24 RM NOTIFY PASSENGER PRIOR TO TICKET PURCHASE & CHECK-IN:                    
		   FEDERAL LAWS FORBID THE CARRIAGE OF HAZARDOUS MATERIALS -                
		   GGAMAUSHAZ/S6-7                                                          
	 25 FA PAX 880-70000000003/ETHU/USD0000.87/01MAR18/ONT1S212G/0550                
		   2501/S6-7/P1                                                             
	 26 FA PAX 880-74000000003/ETHU/USD0000.87/01MAR18/ONT1S212G/0550                                                                         
		   2501/S6-7/P1                                                             
	 26 FA PAX 880-0000000003/ETHU/USD0000.87/01MAR18/ONT1S212G/0550                
		   2501/S6-7/P2                                                             
	 27 FA PAX 880-00000000035/ETHU/USD0000.87/01MAR18/ONT1S212G/0550                
		   2501/S6-7/P3                                                             
	 28 FA PAX 880-00000000036/ETHU/USD9999.87/01MAR18/ONT1S212G/0550                
		   2501/S6-7/P5                                                             
	 29 FA PAX 880-70000000003/ETHU/USD99999.61/01MAR18/ONT1S212G/0550                
		   2501/S6-7/P4                                                             
	 30 FB PAX 0000000000 TTP/RT OK ETICKET - USD16485.09/S6-7/P1-3                 
		   ,5                                                                       
	 31 FB PAX 0000000001 TTP/RT OK ETICKET - USD00900.09/S6-7/P4                   
	 32 FE PAX Q/NON-END/PENALTY APPLY -BG:HU/S6-7/P1-3,5                           
	 33 FE PAX Q/NON-END/PENALTY APPLY -BG:HU/S6-7/P4                               
	 34 FM *M*3                                                                     
	 35 FP CASH                                                                     
	 36 FT *CCA1AM4095                                                              
	 37 FV PAX HU/S6-7/P1-3,5                                                       
	 38 FV PAX HU/S6-7/P4

输出如下:

{
    "code": "OUHEXE",
    "flight_section": [{
        "index": 1,
        "marketing_airline": "HU",
        "flight_number": "7955",
        "class_avail": "I",
        "departure_date": "2018-07-13",
        "arrival_date": "2018-07-13",
        "weekday": "5",
        "departure_city_code": "PVG",
        "departure_city": "",
        "arrival_city_code": "SEA",
        "arrival_city": "",
        "departure_time": "13:55",
        "arrival_time": "09:35",
        "big_code": "PB6814"
    }, {
        "index": 2,
        "marketing_airline": "HU",
        "flight_number": "7956",
        "class_avail": "I",
        "departure_date": "2018-07-31",
        "arrival_date": "2018-07-30",
        "weekday": "1",
        "departure_city_code": "SEA",
        "departure_city": "",
        "arrival_city_code": "PVG",
        "arrival_city": "",
        "departure_time": "12:00",
        "arrival_time": "15:00",
        "big_code": "PB6814"
    }],
    "passenger": [{
        "first_name": "CHEN",
        "last_name": "LIXIN",
        "type": "ADT",
        "gender": "F",
        "id_card_type": "P",
        "id_card_no": "",
        "birthday": "1938-09-23",
        "nationality": "",
        "id_issue_country": "",
        "id_expireDate": "",
        "ticket_number": "880-70000000003",
        "index": 1
    }, {
        "first_name": "CHEN",
        "last_name": "OUXING",
        "type": "ADT",
        "gender": "F",
        "id_card_type": "P",
        "id_card_no": "",
        "birthday": "1969-09-10",
        "nationality": "",
        "id_issue_country": "",
        "id_expireDate": "",
        "ticket_number": "880-0000000003",
        "index": 2
    }, {
        "first_name": "MA",
        "last_name": "GERRY YEN",
        "type": "ADT",
        "gender": "M",
        "id_card_type": "P",
        "id_card_no": "",
        "birthday": "2004-04-28",
        "nationality": "",
        "id_issue_country": "",
        "id_expireDate": "",
        "ticket_number": "880-00000000035",
        "index": 3
    }, {
        "first_name": "MA",
        "last_name": "JASON",
        "type": "CHD",
        "gender": "M",
        "id_card_type": "P",
        "id_card_no": "",
        "birthday": "2010-06-21",
        "nationality": "",
        "id_issue_country": "",
        "id_expireDate": "",
        "ticket_number": "880-70000000003",
        "index": 4
    }, {
        "first_name": "MA",
        "last_name": "TIANYI",
        "type": "ADT",
        "gender": "M",
        "id_card_type": "P",
        "id_card_no": "",
        "birthday": "1968-11-20",
        "nationality": "",
        "id_issue_country": "",
        "id_expireDate": "",
        "ticket_number": "880-00000000036",
        "index": 5
    }]
}

匹配规则

  • 第一行必须以---开头
  • 第二行预订信息,取最后六位数为PNR编码
  • 第三行操作信息
  • 乘客信息必须按名称前面的数字做好排序,否则匹配证件信息会错误
  • 保持航班信息前的数字的排序
  • 每行如果非数字开头,会追加到上一匹配的Item内容中
  • 乘客信息中的性别、出生日期先取数字开头项的内容,如果包含DOCS项,会替换成DOCS项里的信息