python实现火车票查询
1. 知识点:
- Python 基础知识的综合运用
- docopt, requests, colorama, prettytable 库的使用
2 requests: 使用Python访问HTTP资源的必备库
prettytable: 可以将打印内容格式化为像MySQL一样的输出
docopt:命令行参数解析工具
colorama: 命令行着色工具
3.
解析参数
docopt模块可以按照我们自己在文档字符串定义的格式来解析参数,如下
# -*- coding:utf-8 -*-
"""命令行火车票查看器
Usage:
tickets [-gdtkz] <from> <to> <date>
Options:
-h,--help 显示帮助菜单
-g 高铁
-d 动车
-t 特快
-k 快速
-z 直达
Example:
tickets 太原 北京 2019-06-12
tickets -dg 天津 南昌 2019-06-10
"""
arguments = docopt(__doc__)
由上面的程序中,docopt会根据我们在docstring中定义的格式解析参数并返回一个字典(arguments)
-tk 北京 太原 2019-06-10
{'-d': False,
'-g': False,
'-k': True,
'-t': True,
'-z': False,
'<date>': '2019-06-10',
'<from>': '北京',
'<to>': '太原'}
2. 获取数据
参数解析好以后,我们可以通过12306官网获取我们需要的数据,IE浏览器打开12306官网的查票系统,输入出发地,目的地,日期,查询,通过F12开发者模式找到请求地址(刷新一次):
(图片上传出错,后续补)
通过此请求URL,我们可以看到有我们需要的信息,或者直接点击参数查看:
可以看到参数为:出发地 查询类型(成人,学生) 日期 目的地
通过正文可以看到:返回一个json格式的数据,即一个字典,里边包括了各个站点的中文名和站点代号,我们可以利用这个接口来获取。
打开此页的源码(在页面右击选择查看源码):
查看一下具体内容:
复制此链接前边需要加一级域名https://kyfw.12306.cn打开, 如下:
https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.8971
可以得到有关stations的信息
station_names是一个很长的字符串,里边包括了所有车站中文名,拼音,简写,代号等,这里可以看到有很多信息,我们提取我们需要的信息中文字母和代号信息,我们用正则表达式来提取:
写一个简单的脚本抓取(parse_station.py):
import re
import requests
from pprint import pprint
url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.8994'
response = requests.get(url, verify=False) # verify=False不验证证书
stations = re.findall(u'([\u4e00-\u9fa5]+)+\|([A-Z]+)', response.text)
pprint(dict(stations), indent=4)
将提取的有关地点的信息重定向到stations.py文件中
stations = { '一间堡': 'YJT',
'一面坡': 'YPB',
'一面坡北': 'YXB',
'一面山': 'YST',
'七台河': 'QTB',
'七甸': 'QDM',
'七营': 'QYJ',
'七里河': 'QLD',
'万乐': 'WEB',
'万发屯': 'WFB',
'万宁': 'WNQ',
'万州': 'WYW',
'万州北': 'WZE',
'万年': 'WWG',
'万源': 'WYY',
'三义井': 'OYD',
'三井子': 'OJT',
'三亚': 'SEQ',
'三元区': 'SMS',
'三关口': 'OKJ',
'三十家': 'SRD',
'三十里堡': 'SST',
'三原': 'SAY',
'三合庄': 'SVP',
'三堂集': 'SDH',
'三家寨': 'SMM',
'三家店': 'ODP',
'三明': 'SVS',
'三明北': 'SHS',
'三水': 'SJQ',
'三水北': 'ARQ',
'三水南': 'RNQ',
'三汇镇': 'OZW',
'三江南': 'SWZ',
'三江县': 'SOZ',
'三江口': 'SKD',
'三河县': 'OXP',
'三源浦': 'SYL',
'三穗': 'QHW',
'三营': 'OEJ',
'三道湖': 'SDL',
'三都县': 'KKW',
'三门县': 'OQH',
'三门峡': 'SMF',
'三门峡南': 'SCF',
'三门峡西': 'SXF',
'三间房': 'SFX',
'三阳': 'SYU',
'三阳川': 'SYJ',
'上万': 'SWP',
'上园': 'SUD',
'上杭': 'JBS',
'上板城': 'SBP',
'上板城南': 'OBP',
'上海': 'SHH',
'上海南': 'SNH',
'上海虹桥': 'AOH',
'上海西': 'SXH',
'上腰墩': 'SPJ',
'上虞': 'BDH',
'上西铺': 'SXM',
'上饶': 'SRG',
'上高镇': 'SVK',
'*子': 'EIP',
'下城子': 'XCB',
'下板城': 'EBP',
'下社': 'XSV',
'下花园': 'XYP',
'下马塘': 'XAT',
'世博园': 'ZWT',
'东': 'FDC',
'东丰': 'DIL',
'东乡': 'DXG',
'东二道河': 'DRB',
'东京城': 'DJB',
'东光': 'DGP',
'东升': 'DRQ',
'东台': 'DBH',
'东城南': 'IYQ',
'东安东': 'DCZ',
'东岔': 'DCJ',
'东庄': 'DZV',
'东戌': 'RXP',
'东戴河': 'RDD',
'东方': 'UFQ',
'东方红': 'DFB',
'东明县': 'DNF',
'东明村': 'DMD',
'东来': 'RVD',
'东津': 'DKB',
'东海': 'DHB',
'东海县': 'DQH',
'东淤地': 'DBV',
'东港北': 'RGT',
'东湾': 'DRJ',
'东胜': 'DOC',
'东胜东': 'RSC',
'东胜西': 'DYC',
'东至': 'DCH',
'东莞': 'RTQ',
'东莞东': 'DMQ',
'东营': 'DPK',
'东营南': 'DOK',
'东辛庄': 'DXD',
'东边井': 'DBB',
'东通化': 'DTL',
'东镇': 'DNV',
'两家': 'UJT',
'两当': 'LDY',
'中华门': 'VNH',
'中卫': 'ZWJ',
'中和': 'ZHX',
'中宁': 'VNJ',
'中宁东': 'ZDJ',
'中宁南': 'ZNJ',
'中寨': 'ZZM',
'中山': 'ZSQ',
'中山北': 'ZGQ',
'中川机场': 'ZJJ',
'中牟': 'ZGF',
'丰乐镇': 'FZB',
'丰城': 'FCG',
'丰城南': 'FNG',
'丰水村': 'FSJ',
'丰都': 'FUW',
'丰镇': 'FZC',
'丰顺': 'FUQ',
'临城': 'UUP',
'临川': 'LCG',
'临江': 'LQL',
'临汾': 'LFV',
'临汾西': 'LXV',
'临沂': 'LVK',
'临沂东': 'UYK',
'临河': 'LHC',
'临泽': 'LEJ',
'临泽南': 'LDJ',
'临海': 'UFH',
'临淄北': 'UEK',
'临清': 'UQK',
'临湘': 'LXQ',
'临澧': 'LWQ',
'临西': 'UEP',
'临邑': 'LUK',
'临颍': 'LNF',
'临高南': 'KGQ',
'丹东': 'DUT',
'丹东西': 'RWT',
'丹凤': 'DGY',
'丹徒': 'RUH',
'丹阳': 'DYH',
'丹阳北': 'EXH',
'丹霞山': 'IRQ',
'丽水': 'USH',
'丽江': 'LHM',
'乃林': 'NLD',
'义乌': 'YWH',
'义县': 'YXD',
'义县西': 'YSD',
'义马': 'YMF',
'乌伊岭': 'WPB',
'乌兰哈达': 'WLC',
'乌兰察布': 'WPC',
'乌兰木图': 'VLT',
'乌兰浩特': 'WWT',
'乌奴耳': 'WRX',
'乌尔旗汗': 'WHX',
'乌拉山': 'WSC',
'乌拉特前旗': 'WQC',
'乌海': 'WVC',
'乌海西': 'WXC',
'乌苏': 'WSR',
'乌西': 'WXR',
'乌鲁木齐': 'WAR',
'乌鲁木齐南': 'WMR',
'乌龙泉南': 'WFN',
'乐东': 'UQQ',
'乐善村': 'LUM',
'乐山': 'IVW',
'乐山北': 'UTW',
'乐平市': 'LPG',
'乐昌': 'LCQ',
'乐昌东': 'ILQ',
'乐清': 'UPH',
'乐都': 'LDO',
'乐都南': 'LVO',
'九三': 'SSX',
'九台': 'JTL',
'九台南': 'JNL',
'九江': 'JJG',
'九郎山': 'KJQ',
'乳山': 'ROK',
'乾县': 'QBY',
'乾安': 'QOT',
'二密河': 'RML',
'二营': 'RYJ',
'二连': 'RLC',
'二道沟门': 'RDP',
'二道湾': 'RDX',
'二龙': 'RLD',
'二龙山屯': 'ELA',
'于都': 'YDG',
'云东海': 'NAQ',
'云南驿': 'ANM',
'云居寺': 'AFP',
'云山': 'KZQ',
'云彩岭': 'ACP',
'云梦': 'YMN',
'云浮东': 'IXQ',
'云霄': 'YBS',
'五五': 'WVR',
'五原': 'WYC',
'五叉沟': 'WCT',
'五台山': 'WSV',
'五大连池': 'WRB',
'五女山': 'WET',
'五家': 'WUB',
'五寨': 'WZV',
'五常': 'WCB',
'五府山': 'WFG',
'五棵树': 'WKT',
'五莲': 'WLK',
'五营': 'WWB',
'五通': 'WTZ',
'五道沟': 'WDL',
'五道河': 'WHP',
'五龙背': 'WBT',
'五龙背东': 'WMT',
'井冈山': 'JGG',
'井南': 'JNP',
'井店': 'JFP',
'井陉': 'JJP',
'亚': 'JUQ',
'亚布力': 'YBB',
'亚布力南': 'YWB',
'亚布力西': 'YSB',
'亚龙湾': 'TWQ',
'交城': 'JNV',
'京山': 'JCN',
'亭亮': 'TIZ',
'亮甲店': 'LRT',
'亳州': 'BZH',
'什里店': 'OMP',
'仁布': 'RUO',
'介休': 'JXV',
'介休东': 'JDV',
'从江': 'KNW',
'仙人桥': 'XRL',
'仙林': 'XPH',
'仙桃西': 'XAN',
'仙游': 'XWS',
'代县': 'DKV',
'仪征': 'UZH',
'仲恺': 'KKQ',
'任丘': 'RQP',
'伊图里河': 'YEX',
'伊宁': 'YMR',
'伊宁东': 'YNR',
'伊尔施': 'YET',
'伊拉哈': 'YLX',
'伊敏': 'YMX',
'伊春': 'YCB',
'伊林': 'YLB',
'伊通': 'YTL',
'会同': 'VTQ',
'会昌北': 'XEG',
'低庄': 'DVQ',
'低窝铺': 'DWJ',
'余姚': 'YYH',
'余姚北': 'CTH',
'余杭': 'EVH',
'余江': 'YHG',
'余粮堡': 'YLD',
'佛坪': 'FUY',
'佛山': 'FSQ',
'佛山西': 'FOQ',
'佳木斯': 'JMB',
'佳木斯西': 'JUB',
'依兰': 'YEB',
'依安': 'YAX',
'侯马': 'HMV',
'侯马西': 'HPV',
'保定': 'BDP',
'保定东': 'BMP',
'保康': 'BKD',
'信丰': 'EFG',
'信宜': 'EEQ',
'信阳': 'XUN',
'信阳东': 'OYN',
'修文县': 'XWE',
'修武': 'XWF',
'修武西': 'EXF',
'倭肯': 'WQB',
'偃师': 'YSF',
'偏岭': 'PNT',
'偏店': 'PRP',
'元宝山': 'YUD',
'元氏': 'YSP',
'元谋': 'YMM',
'先锋': 'NQQ',
'光山': 'GUN',
'光明城': 'IMQ',
'光泽': 'GZS',
'克一河': 'KHX',
'克东': 'KOB',
'克山': 'KSB',
'克拉玛依': 'KHR',
'免渡河': 'MDX',
'兑镇': 'DWV',
'兖州': 'YZK',
'全州南': 'QNZ',
'全椒': 'INH',
'八仙筒': 'VXD',
'八方山': 'FGQ',
'八步': 'BBE',
'八角台': 'BTD',
'八达岭': 'ILP',
'八里甸子': 'BLT',
'八面城': 'BMD',
'八面通': 'BMB',
'公主岭': 'GLT',
'公主岭南': 'GBT',
'公庙子': 'GMC',
'公营子': 'GYD',
'六合': 'KLH',
'六合镇': 'LEX',
'六安': 'UAH',
'六枝': 'LIW',
'六盘山': 'UPJ',
'六盘水': 'UMW',
'六道河子': 'LVP',
'兰岗': 'LNB',
'兰州': 'LZJ',
'兰州东': 'LVJ',
'兰州新区': 'LQJ',
'兰州西': 'LAJ',
'兰棱': 'LLB',
'兰溪': 'LWH',
'兰考': 'LKF',
'兰考南': 'LUF',
'兰陵北': 'COK',
'共青城': 'GAG',
'关岭': 'GLE',
'关林': 'GLF',
'兴业': 'SNZ',
'兴义': 'XRZ',
'兴凯': 'EKB',
'兴和西': 'XEC',
'兴国': 'EUG',
'兴城': 'XCD',
'兴宁': 'ENQ',
'兴安': 'XAZ',
'兴安北': 'XDZ',
'兴平': 'XPY',
'兴泉堡': 'XQJ',
'兴隆县': 'EXP',
'兴隆店': 'XDD',
'兴隆镇': 'XZB',
'内乡': 'NXF',
'内江': 'NJW',
'内江北': 'NKW',
'册亨': 'CHZ',
'冕宁': 'UGW',
'军粮城北': 'JMP',
'农安': 'NAT',
'冠豸山': 'GSS',
'冯屯': 'FTX',
'冷水江东': 'UDQ',
'准格尔': 'ZEC',
'凌海': 'JID',
'凌源': 'LYD',
'凌源东': 'LDD',
'凤凰城': 'FHT',
'凤凰机场': 'FJQ',
'凤县': 'FXY',
'凤城东': 'FDT',
'凤州': 'FZY',
'凤阳': 'FUH',
'凭祥': 'PXZ',
'凯里': 'KLW',
'凯里南': 'QKW',
'刀尔登': 'DRD',
'分宜': 'FYG',
'刘家店': 'UDT',
'刘家河': 'LVT',
'创业村': 'CEX',
'利川': 'LCN',
'利津南': 'LNK',
'到保': 'RBT',
'前卫': 'QWD',
'前山': 'QXQ',
'前磨头': 'QMP',
'前苇塘': 'QWP',
'前进镇': 'QEB',
'前锋': 'QFB',
'剑门关': 'JME',
'加格达奇': 'JGX',
'勃利': 'BLB',
'勉县': 'MVY',
'包头': 'BTC',
'包头东': 'BDC',
'化州': 'HZZ',
'化德': 'HGC',
'北井子': 'BRT',
'北京': 'BJP',
'北京东': 'BOP',
'北京北': 'VAP',
'北京南': 'VNP',
'北京西': 'BXP',
'北台': 'BTT',
'北宅': 'BVP',
'北安': 'BAB',
'北屯': 'BYP',
'北屯市': 'BXR',
'北戴河': 'BEP',
'北流': 'BOZ',
'北海': 'BHZ',
'北滘': 'IBQ',
'北碚': 'BPW',
'北票': 'BPT',
'北票南': 'RPD',
'北营': 'BIV',
'北马圈子': 'BRP',
'十堰': 'SNN',
'十家子': 'SJD',
'十渡': 'SEP',
'千岛湖': 'QDU',
'千河': 'QUY',
'千阳': 'QOY',
'午汲': 'WJP',
'华城': 'VCQ',
'华家': 'HJT',
'华容': 'HRN',
'华容东': 'HPN',
'华容南': 'KRN',
'华山': 'HSY',
'华山北': 'HDY',
'华蓥': 'HUW',
'卓资东': 'ZDC',
'卓资山': 'ZZC',
'南': 'FXS',
'南丰': 'NFG',
'南丹': 'NDZ',
'南京': 'NJH',
'南京南': 'NKH',
'南仇': 'NCK',
'南充': 'NCW',
'南充北': 'NCE',
'南关岭': 'NLT',
'南华': 'NAM',
'南华北': 'NHS',
'南博山': 'NBK',
'南口': 'NKP',
'南口前': 'NKT',
'南召': 'NAF',
'南台': 'NTT',
'南城': 'NDG',
'南城司': 'NSP',
'南堡北': 'TLP',
'南大庙': 'NMP',
'南头': 'NOQ',
'南宁': 'NNZ',
'南宁东': 'NFZ',
'南宁西': 'NXZ',
'南宫东': 'NFP',
'南岔': 'NCB',
'南峪': 'NUP',
'南平': 'NPS',
'南平北': 'NBS',
'南平南': 'NNS',
'南昌': 'NCG',
'南昌西': 'NXG',
'南曹': 'NEF',
'南朗': 'NNQ',
'南木': 'NMX',
'南杂木': 'NZT',
'南桥': 'NQD',
'南江': 'FIW',
'南江口': 'NDQ',
'南河川': 'NHJ',
'南湖东': 'NDN',
'南湾子': 'NWP',
'南翔北': 'NEH',
'南芬': 'NFT',
'南芬北': 'NUT',
'南观村': 'NGP',
'南通': 'NUH',
'南部': 'NBE',
'南阳': 'NFF',
'南阳寨': 'NYF',
'南陵': 'LLH',
'南雄': 'NCQ',
'南靖': 'NJS',
'博乐': 'BOR',
'博克图': 'BKX',
'博兴': 'BXK',
'博白': 'BBZ',
'博鳌': 'BWQ',
'卢龙': 'UAP',
'卧里屯': 'WLX',
'卫东': 'WVT',
'卫星': 'WVB',
'卫辉': 'WHF',
'即墨北': 'JVK',
'原平': 'YPV',
'原平西': 'IPV',
'厦门': 'XMS',
'厦门北': 'XKS',
'厦门高崎': 'XBS',
'友好': 'YOB',
'双丰': 'OFB',
'双吉': 'SML',
'双城北': 'SBB',
'双城堡': 'SCB',
'双峰北': 'NFQ',
'双水镇': 'PQQ',
'双河镇': 'SEL',
'双洋': 'SQS',
'双流机场': 'IPW',
'双流西': 'IQW',
'双牌': 'SBZ',
'双辽': 'ZJD',
'双阳': 'OYT',
'双鸭山': 'SSB',
'双龙湖': 'OHB',
'发耳': 'FEM',
'口东': 'KEQ',
'口前': 'KQL',
'古东': 'GDV',
'古交': 'GJV',
'古北口': 'GKP',
'古城镇': 'GZB',
'古浪': 'GLJ',
'古田': 'GTS',
'古田会址': 'STS',
'古田北': 'GBS',
'古莲': 'GRX',
'古镇': 'GNQ',
'句容西': 'JWH',
'台前': 'TTK',
'台安': 'TID',
'台安南': 'TAD',
'台山': 'PUQ',
'台州': 'TZH',
'叶城': 'YER',
'叶柏寿': 'YBD',
'司家岭': 'OLK',
'合川': 'WKW',
'合浦': 'HVZ',
'合肥': 'HFH',
'合肥北城': 'COH',
'合肥南': 'ENH',
'合肥西': 'HTH',
'合阳': 'HAY',
'合阳北': 'HTY',
'吉安': 'VAG',
'吉文': 'JWX',
'吉林': 'JLL',
'吉舒': 'JSL',
'吉首': 'JIQ',
'同心': 'TXJ',
'同江': 'TJB',
'名山': 'MSE',
'后湖': 'IHN',
'吐列毛杜': 'TMD',
'吐哈': 'THR',
'吐鲁番': 'TFR',
'吐鲁番北': 'TAR',
'向塘': 'XTG',
'向阳': 'XDB',
'吕梁': 'LHV',
'启东': 'QOU',
'吴圩': 'WYZ',
'吴堡': 'WUY',
'吴官田': 'WGM',
'吴家屯': 'WJT',
'吴家川': 'WCJ',
'吴川': 'WAQ',
'吴桥': 'WUP',
'周口': 'ZKN',
'周家': 'ZOB',
'周家屯': 'ZOD',
'周水子': 'ZIT',
'呼兰': 'HUB',
'呼和浩特': 'HHC',
'呼和浩特东': 'NDC',
'呼鲁斯太': 'VTJ',
'咋子': 'ZAL',
'和什托洛盖': 'VSR',
'和平': 'VAQ',
'和田': 'VTR',
'和硕': 'VUR',
'和静': 'HJR',
'和龙': 'HLL',
'咸宁': 'XNN',
'咸宁东': 'XKN',
'咸宁北': 'XRN',
'咸宁南': 'UNN',
'咸阳': 'XYY',
'咸阳秦都': 'XOY',
'哈密': 'HMR',
'哈尔滨': 'HBB',
'哈尔滨东': 'VBB',
'哈尔滨北': 'HTB',
'哈尔滨西': 'VAB',
'哈拉海': 'HIT',
'哈拉苏': 'HAX',
'哈达铺': 'HDJ',
'响水县': 'XSU',
'哲里木': 'ZLC',
'唐家湾': 'PDQ',
'唐山': 'TSP',
'唐山北': 'FUP',
'唐河': 'THF',
'唐海南': 'IEP',
'商丘': 'SQF',
'商丘南': 'SPF',
'商南': 'ONY',
'商城': 'SWN',
'商河': 'SOK',
'商洛': 'OLY',
'商都': 'SXC',
'喀什': 'KSR',
'喀喇其': 'KQX',
'喀左': 'KZT',
'喇嘛甸': 'LMX',
'喜德': 'EDW',
'嘉兴': 'JXH',
'嘉兴南': 'EPH',
'嘉善': 'JSH',
'嘉善南': 'EAH',
'嘉峪关': 'JGJ',
'嘉峪关南': 'JBJ',
'嘉峰': 'JFF',
'嘉祥': 'JUK',
'嘎什甸子': 'GXD',
'四会': 'AHQ',
'四合永': 'OHD',
'四平': 'SPT',
'四平东': 'PPT',
'四方台': 'STB',
'四棵树': 'SIR',
'四道湾': 'OUD',
'团结': 'TIX',
'园墩': 'YAJ',
'固原': 'GUJ',
'固始': 'GXN',
'固安': 'GFP',
'固镇': 'GEH',
'图们': 'TML',
'图们北': 'QSL',
'图强': 'TQX',
'图里河': 'TEX',
'土地堂东': 'TTN',
'土桥子': 'TQJ',
'土溪': 'TSW',
'土牧尔台': 'TRC',
'土贵乌拉': 'TGC',
'土门子': 'TCJ',
'坂田': 'BTQ',
'坡底下': 'PXJ',
'坪上': 'PSK',
'坪石': 'PSQ',
'垫江': 'DJE',
'城固': 'CGY',
'城固北': 'CBY',
'城子坦': 'CWT',
'城阳': 'CEK',
'塔哈': 'THX',
'塔城': 'TZR',
'塔尔气': 'TVX',
'塔崖驿': 'TYP',
'塔河': 'TXX',
'塔石嘴': 'TIM',
'塘沽': 'TGP',
'塘豹': 'TBQ',
'墨玉': 'MUR',
'壮志': 'ZUX',
'复盛': 'FAW',
'夏官营': 'XGJ',
'夏石': 'XIZ',
'夏邑县': 'EJH',
'大丰': 'KRQ',
'大余': 'DYG',
'大元': 'DYZ',
'大关': 'RGW',
'大兴': 'DXX',
'大兴沟': 'DXL',
'大其拉哈': 'DQX',
'大冶北': 'DBN',
'大口屯': 'DKP',
'大同': 'DTV',
'大坝': 'DBJ',
'大埔': 'DPI',
'大堡': 'DVT',
'大孤山': 'RMT',
'大安': 'RAT',
'大安北': 'RNT',
'大官屯': 'DTT',
'大屯': 'DNT',
'大巴': 'DBD',
'大平房': 'DPD',
'大庆': 'DZX',
'大庆东': 'LFX',
'大庆西': 'RHX',
'大成': 'DCT',
'大战场': 'DTJ',
'大拟': 'DNZ',
'大方南': 'DNE',
'大旺': 'WWQ',
'大明湖': 'JAK',
'大朗镇': 'KOQ',
'大杖子': 'DAP',
'大杨树': 'DUX',
'大板': 'DBC',
'大林': 'DLD',
'大武口': 'DFJ',
'大涧': 'DFP',
'大湾子': 'DFM',
'大灰厂': 'DHP',
'大王滩': 'DZZ',
'大理': 'DKM',
'大田边': 'DBM',
'大盘石': 'RPP',
'大石头': 'DSL',
'大石头南': 'DAL',
'大石寨': 'RZT',
'大石桥': 'DQT',
'大磴沟': 'DKJ',
'大禾塘': 'SOQ',
'大竹园': 'DZY',
'大红旗': 'DQD',
'大英东': 'IAW',
'大苴': 'DIM',
'大荔': 'DNY',
'大营': 'DYV',
'大营子': 'DZD',
'大营镇': 'DJP',
'大虎山': 'DHD',
'大足南': 'FQW',
'大连': 'DLT',
'大连北': 'DFT',
'大连西': 'GZT',
'大通西': 'DTO',
'大邑': 'DEE',
'大阳': 'RET',
'大陆号': 'DLC',
'大雁': 'DYX',
'大青沟': 'DSD',
'天义': 'TND',
'天岗': 'TGL',
'天柱山': 'QWH',
'天桥岭': 'TQL',
'天水': 'TSJ',
'天水南': 'TIJ',
'天河机场': 'TJN',
'天河街': 'TEN',
'天津': 'TJP',
'天津北': 'TBP',
'天津南': 'TIP',
'天津西': 'TXP',
'天祝': 'TZJ',
'天镇': 'TZV',
'天门': 'TMN',
'天门南': 'TNN',
'太原': 'TYV',
'太原东': 'TDV',
'太原北': 'TBV',
'太原南': 'TNV',
'太和北': 'JYN',
'太姥山': 'TLS',
'太平川': 'TIT',
'太平镇': 'TEB',
'太湖': 'TKH',
'太谷': 'TGV',
'太谷西': 'TIV',
'太阳升': 'TQT',
'太阳山': 'TYJ',
'夹心子': 'JXT',
'奇峰塔': 'QVP',
'奈曼': 'NMD',
'奈林皋': 'NGT',
'奉化': 'FHH',
'奎屯': 'KTR',
'奎山': 'KAB',
'如东': 'RIH',
'如皋': 'RBH',
'始兴': 'IPQ',
'姚千户屯': 'YQT',
'姚安': 'YAC',
'姚家': 'YAT',
'姚渡': 'AOJ',
'姜堰': 'UEH',
'姜家': 'JJB',
'威海': 'WKK',
'威海北': 'WHK',
'威箐': 'WAM',
'威舍': 'WSM',
'威虎岭北': 'WBL',
'娄山关南': 'LSE',
'娄底': 'LDQ',
'娄底南': 'UOQ',
'娄烦': 'USV',
'娘子关': 'NIP',
'婺源': 'WYG',
'嫩江': 'NGX',
'子洲': 'ZZY',
'子长': 'ZHY',
'孙吴': 'SKB',
'孙家': 'SUB',
'孙镇': 'OZY',
'孝南': 'XNV',
'孝感': 'XGN',
'孝感东': 'GDN',
'孝感北': 'XJN',
'孝西': 'XOV',
'孟家岗': 'MGB',
'孟庄': 'MZF',
'孤家子': 'GKT',
'孤山口': 'GSP',
'宁东': 'NOJ',
'宁东南': 'NDJ',
'宁乡': 'NXQ',
'宁国': 'NNH',
'宁安': 'NAB',
'宁家': 'NVT',
'宁强南': 'NOY',
'宁德': 'NES',
'宁明': 'NMZ',
'宁村': 'NCZ',
'宁武': 'NWV',
'宁波': 'NGH',
'宁波东': 'NVH',
'宁海': 'NHH',
'宁陵县': 'NLF',
'安亭北': 'ASH',
'安仁': 'ARG',
'安化': 'PKQ',
'安口窑': 'AYY',
'安图': 'ATL',
'安图西': 'AXL',
'安塘': 'ATV',
'安多': 'ADO',
'安定': 'ADP',
'安家': 'AJB',
'安平': 'APT',
'安广': 'AGT',
'安庆': 'AQH',
'安庆西': 'APH',
'安康': 'AKY',
'安德': 'ARW',
'安江东': 'ADA',
'安溪': 'AXS',
'安达': 'ADX',
'安阳': 'AYF',
'安阳东': 'ADF',
'安陆': 'ALN',
'安靖': 'PYW',
'安顺': 'ASW',
'安顺西': 'ASE',
'安龙': 'AUZ',
'宋': 'SOB',
'宋城路': 'SFF',
'宏克力': 'OKB',
'宏庆': 'HEY',
'官厅': 'GTP',
'官厅西': 'KEP',
'官字井': 'GOT',
'官高': 'GVP',
'定南': 'DNG',
'定州': 'DXP',
'定州东': 'DOP',
'定襄': 'DXV',
'定西': 'DSJ',
'定西北': 'DNJ',
'定边': 'DYJ',
'定远': 'EWH',
'定陶': 'DQK',
'宜兴': 'YUH',
'宜城': 'YIN',
'宜宾': 'YBW',
'宜州': 'YSZ',
'宜昌': 'YCN',
'宜昌东': 'HAN',
'宜春': 'YEG',
'宜春西': 'YCG',
'宜耐': 'YVM',
'宜良北': 'YSM',
'宝华山': 'BWH',
'宝坻': 'BPP',
'宝拉格': 'BQC',
'宝林': 'BNB',
'宝泉岭': 'BQB',
'宝清': 'BUB',
'宝鸡': 'BJY',
'宝鸡南': 'BBY',
'宝龙山': 'BND',
'宣化': 'XHP',
'宣和': 'XWJ',
'宣城': 'ECH',
'宣威': 'XWM',
'宣汉': 'XHY',
'容县': 'RXZ',
'容桂': 'RUQ',
'宽甸': 'KDT',
'宾州': 'BZB',
'宾西北': 'BBB',
'宾阳': 'UKZ',
'宿州': 'OXH',
'宿州东': 'SRH',
'宿松': 'OAH',
'密云北': 'MUP',
'密山': 'MSB',
'富县': 'FEY',
'富县东': 'FDY',
'富宁': 'FNM',
'富川': 'FDZ',
'富拉尔基': 'FRX',
'富海': 'FHX',
'富源': 'FYM',
'富源北': 'FBM',
'富裕': 'FYX',
'富锦': 'FIB',
'富阳': 'FYU',
'寒岭': 'HAT',
'寒葱沟': 'HKB',
'察素齐': 'CSC',
'寮步': 'LTQ',
'对青山': 'DQB',
'寿阳': 'SYV',
'射阳': 'SAU',
'将乐': 'JLS',
'小东': 'XOD',
'小哨': 'XAM',
'小寺沟': 'ESP',
'小岭': 'XLB',
'小市': 'XST',
'小得江': 'EJM',
'小扬气': 'XYX',
'小新街': 'XXM',
'小月旧': 'XFM',
'小村': 'XEM',
'小榄': 'EAQ',
'小河沿': 'XYD',
'小河镇': 'EKY',
'小董': 'XEZ',
'小西庄': 'XXP',
'小金口': 'NKQ',
'小雨谷': 'XHM',
'尖山': 'JPQ',
'尖峰': 'PFQ',
'尚家': 'SJB',
'尚志': 'SZB',
'尚志南': 'OZB',
'尤溪': 'YXS',
'尹地': 'YDM',
'尼勒克': 'NIR',
'尼木': 'NMO',
'屏边': 'PBM',
'山丹': 'SDJ',
'山坡东': 'SBN',
'山城镇': 'SCL',
'山市': 'SQB',
'山河屯': 'SHL',
'山海关': 'SHD',
'山阴': 'SNV',
'岐山': 'QAY',
'岑溪': 'CNZ',
'岔江': 'CAM',
'岚县': 'UXV',
'岚山西': 'UWK',
'岢岚': 'KLV',
'岩会': 'AEP',
'岱岳': 'RYV',
'岳家井': 'YGJ',
'岳池': 'AWW',
'岳阳': 'YYQ',
'岳阳东': 'YIQ',
'岷县': 'MXJ',
'峡江': 'EJG',
'峨眉': 'EMW',
'峨眉山': 'IXW',
'峨边': 'EBW',
'峻德': 'JDB',
'崇仁': 'CRG',
'崇州': 'CZE',
'崇左': 'CZZ',
'崔黄口': 'CHP',
'崖州': 'YUQ',
'嵩明': 'SVM',
'嵯岗': 'CAX',
'巢湖': 'CIH',
'巢湖东': 'GUH',
'工农湖': 'GRT',
'左岭': 'ZSN',
'巨宝': 'JRT',
'巨野': 'JYK',
'巩义': 'GXF',
'巩义南': 'GYF',
'巴东': 'BNN',
'巴中': 'IEW',
'巴中东': 'BDE',
'巴山': 'BAY',
'巴彦高勒': 'BAC',
'巴林': 'BLX',
'巴楚': 'BCR',
'布列开': 'BLR',
'布海': 'BUT',
'师宗': 'SEM',
'师庄': 'SNM',
'带岭': 'DLB',
'常山': 'CSU',
'常州': 'CZH',
'常州北': 'ESH',
'常平': 'DAQ',
'常平东': 'FQQ',
'常平南': 'FPQ',
'常庄': 'CVK',
'常德': 'VGQ',
'帽儿山': 'MRB',
'帽儿山西': 'MUB',
'干塘': 'GNJ',
'干沟': 'GGL',
'平关': 'PGM',
'平凉': 'PIJ',
'平凉南': 'POJ',
'平南南': 'PAZ',
'平原': 'PYK',
'平原东': 'PUK',
'平原堡': 'PPJ',
'平台': 'PVT',
'平坝南': 'PBE',
'平型关': 'PGV',
'平安': 'PAL',
'平安镇': 'PZT',
'平安驿': 'PNO',
'平山': 'PSB',
'平岗': 'PGL',
'平峪': 'PYP',
'平庄': 'PZD',
'平庄南': 'PND',
'平度': 'PAK',
'平房': 'PFB',
'平旺': 'PWV',
'平昌': 'PCE',
'平果': 'PGZ',
'平河口': 'PHM',
'平泉': 'PQP',
'平泉北': 'PBP',
'平洋': 'PYX',
'平湖': 'PHQ',
'平田': 'PTM',
'平社': 'PSV',
'平遥': 'PYV',
'平遥古城': 'PDV',
'平邑': 'PIK',
'平顶山': 'PEN',
'平顶山西': 'BFF',
'广元': 'GYW',
'广元南': 'GAW',
'广南卫': 'GNM',
'广南县': 'GXM',
'广宁': 'FBQ',
'广宁寺': 'GQT',
'广宁寺南': 'GNT',
'广安': 'VJW',
'广安南': 'VUW',
'广州': 'GZQ',
'广州东': 'GGQ',
'广州北': 'GBQ',
'广州南': 'IZQ',
'广州西': 'GXQ',
'广德': 'GRH',
'广水': 'GSN',
'广汉': 'GHW',
'广汉北': 'GVW',
'广通北': 'GPM',
'庄桥': 'ZQH',
'庄河北': 'ZUT',
'庆丰': 'QFT',
'庆安': 'QAB',
'庆盛': 'QSQ',
'庆阳山': 'QSJ',
'庐山': 'LSG',
'庐江': 'UJH',
'库伦': 'KLD',
'库尔勒': 'KLR',
'库车': 'KCR',
'库都尔': 'KDX',
'应县': 'YZV',
'应城': 'YHN',
'庙城': 'MAP',
'庙山': 'MSN',
'庙岭': 'MLL',
'庙庄': 'MZJ',
'康城': 'KCP',
'康庄': 'KZP',
'康熙岭': 'KXZ',
'康金井': 'KJB',
'廉江': 'LJZ',
'廊坊': 'LJP',
'廊坊北': 'LFP',
'延吉': 'YJL',
'延吉西': 'YXL',
'延安': 'YWY',
'延平西': 'YWS',
'延庆': 'YNP',
'建三江': 'JIB',
'建始': 'JRN',
'建宁县北': 'JCS',
'建安': 'JUL',
'建德': 'JDU',
'建昌': 'JFD',
'建水': 'JSM',
'建湖': 'AJH',
'建瓯': 'JVS',
'建瓯西': 'JUS',
'建设': 'JET',
'建阳': 'JYS',
'开化': 'KHU',
'开原': 'KYT',
'开原西': 'KXT',
'开安': 'KAT',
'开封': 'KFF',
'开封北': 'KBF',
'开平南': 'PVQ',
'开江': 'KAW',
'开福寺': 'FLQ',
'开阳': 'KVW',
'开鲁': 'KLC',
'弋江': 'RVH',
'弋阳': 'YIG',
'弓棚子': 'GPT',
'张兰': 'ZLV',
'张家口': 'ZMP',
'张家口南': 'IXP',
'张家川': 'ZIJ',
'张家界': 'DIQ',
'张掖': 'ZYJ',
'张掖西': 'ZEJ',
'张桥': 'ZQY',
'张百湾': 'ZUP',
'张维屯': 'ZWB',
'张辛': 'ZIP',
'弥勒': 'MLM',
'弥渡': 'MDF',
'归流河': 'GHT',
'当涂东': 'OWH',
'当阳': 'DYN',
'彝良': 'ALW',
'彬州': 'BXY',
'彭山': 'PSW',
'彭山北': 'PPW',
'彭州': 'PMW',
'彭州南': 'PKW',
'彭水': 'PHW',
'彭泽': 'PZG',
'彭阳': 'PYJ',
'彰武': 'ZWD',
'徐家': 'XJB',
'徐家店': 'HYK',
'徐州': 'XCH',
'徐州东': 'UUH',
'徐水': 'XSP',
'徐闻': 'XJQ',
'得耳布尔': 'DRX',
'得莫利': 'DTB',
'徘徊北': 'PHP',
'微子镇': 'WQP',
'德令哈': 'DHO',
'德伯斯': 'RDT',
'德保': 'RBZ',
'德兴': 'DWG',
'德兴东': 'DDG',
'德安': 'DAG',
'德州': 'DZP',
'德州东': 'DIP',
'德惠': 'DHT',
'德惠西': 'DXT',
'德昌': 'DVW',
'德清': 'DRH',
'德清西': 'MOH',
'德阳': 'DYW',
'徽县': 'HYY',
'忻州': 'XXV',
'忻州西': 'IXV',
'怀仁': 'HRV',
'怀仁东': 'HFV',
'怀化': 'HHQ',
'怀化南': 'KAQ',
'怀柔': 'HRP',
'怀柔北': 'HBP',
'怀集': 'FAQ',
'恩平': 'PXQ',
'恩施': 'ESN',
'恭城': 'GCZ',
'息县': 'ENN',
'息烽': 'XFW',
'悬钟': 'XRP',
'惠东': 'KDQ',
'惠农': 'HMJ',
'惠安': 'HNS',
'惠山': 'VCH',
'惠州': 'HCQ',
'惠州南': 'KNQ',
'惠州西': 'VXQ',
'惠环': 'KHQ',
'慈利': 'CUQ',
'成吉思汗': 'CJX',
'成都': 'CDW',
'成都东': 'ICW',
'成都南': 'CNW',
'成都西': 'CMW',
'成高子': 'CZB',
'戚墅堰': 'QYH',
'扎兰屯': 'ZTX',
'扎赉诺尔西': 'ZXX',
'扎鲁特': 'ZLD',
'打柴沟': 'DGJ',
'托克托东': 'TVC',
'扬州': 'YLH',
'扶余': 'FYT',
'扶余北': 'FBT',
'扶绥': 'FSZ',
'承德': 'CDP',
'承德东': 'CCP',
'承德南': 'IVP',
'承德县北': 'IYP',
'抚宁': 'FNP',
'抚州': 'FZG',
'抚州东': 'FDG',
'抚州北': 'FBG',
'抚松': 'FSL',
'抚远': 'FYB',
'抚顺': 'FST',
'抚顺北': 'FET',
'拉古': 'LGB',
'拉哈': 'LHX',
'拉林': 'LAB',
'拉萨': 'LSO',
'拉鲊': 'LEM',
'招柏': 'ZBP',
'换新天': 'VTB',
'揭阳': 'JRQ',
'攀枝花': 'PRW',
'攸县': 'YOG',
'攸县南': 'YXG',
'敖力布告': 'ALD',
'敖汉': 'YED',
'敦化': 'DHL',
'敦煌': 'DHJ',
'文地': 'WNZ',
'文安': 'WBP',
'文昌': 'WEQ',
'文水': 'WEV',
'文登': 'WBK',
'文登东': 'WGK',
'斜河涧': 'EEP',
'新乐': 'ELP',
'新乡': 'XXF',
'新乡东': 'EGF',
'新会': 'EFQ',
'新余': 'XUG',
'新余北': 'XBG',
'新保安': 'XAP',
'新兴县': 'XGQ',
'新化': 'EHQ',
'新化南': 'EJQ',
'新华': 'XHB',
'新华屯': 'XAX',
'新县': 'XSN',
'新友谊': 'EYB',
'新和': 'XIR',
'新坪田': 'XPM',
'新城子': 'XCT',
'新安': 'EAM',
'新安县': 'XAF',
'新帐房': 'XZX',
'新干': 'EGG',
'新晃': 'XLQ',
'新晃西': 'EWQ',
'新李': 'XLJ',
'新杖子': 'ERP',
'新松浦': 'XOB',
'新林': 'XPX',
'新民': 'XMD',
'新民北': 'XOT',
'新江': 'XJM',
'新沂': 'VIH',
'新津': 'IRW',
'新津南': 'ITW',
'新窝铺': 'EPD',
'新立屯': 'XLD',
'新立镇': 'XGT',
'新绛': 'XJV',
'新绰源': 'XRX',
'新肇': 'XZT',
'新邱': 'XQD',
'新郑机场': 'EZF',
'新都东': 'EWW',
'新阳镇': 'XZJ',
'新青': 'XQB',
'新香坊北': 'RHB',
'方正': 'FNB',
'施家嘴': 'SHM',
'施秉': 'AQW',
'旅顺': 'LST',
'旌德': 'NSH',
'旗下营': 'QXC',
'旗下营南': 'QNC',
'无为': 'IIH',
'无为南': 'WWU',
'无锡': 'WXH',
'无锡东': 'WGH',
'无锡新区': 'IFH',
'日喀则': 'RKO',
'日照': 'RZK',
'日照西': 'KZK',
'旧庄窝': 'JVP',
'旬阳': 'XUY',
'旬阳北': 'XBY',
'旺苍': 'WEW',
'昂昂溪': 'AAX',
'昆山': 'KSH',
'昆山南': 'KNH',
'昆明': 'KMM',
'昆明南': 'KOM',
'昆明西': 'KXM',
'昆玉': 'ESR',
'昆都仑召': 'KDC',
'昆阳': 'KAM',
'昌': 'NOG',
'昌乐': 'CLK',
'昌图': 'CTT',
'昌图西': 'CPT',
'昌平': 'CPP',
'昌平北': 'VBP',
'昌黎': 'CLP',
'明光': 'MGH',
'明城': 'MCL',
'明水河': 'MUT',
'明港': 'MGN',
'明港东': 'MDN',
'明珠': 'MFQ',
'春湾': 'CQQ',
'春阳': 'CAL',
'昭化': 'ZHW',
'昭山': 'KWQ',
'昭通': 'ZDW',
'晋中': 'JZV',
'晋城': 'JCF',
'晋城北': 'JEF',
'晋州': 'JXP',
'晋江': 'JJS',
'晏城': 'YEK',
'晨明': 'CMB',
'普兰店': 'PLT',
'普宁': 'PEQ',
'普安': 'PAN',
'普安县': 'PUE',
'普定': 'PGW',
'普湾': 'PWT',
'普者黑': 'PZM',
'普雄': 'POW',
'景州': 'JEP',
'景德镇': 'JCG',
'景德镇北': 'JDG',
'景泰': 'JTJ',
'暖泉': 'NQJ',
'暮云': 'KIQ',
'曲水县': 'QSO',
'曲江': 'QIM',
'曲阜': 'QFK',
'曲阜东': 'QAK',
'曲靖': 'QJM',
'曲靖北': 'QBM',
'曹县': 'CXK',
'曹妃甸东': 'POP',
'曹妃甸港': 'PGP',
'曹子里': 'CFP',
'曾口': 'ZKE',
'曾家坪子': 'ZBW',
'月亮田': 'YUM',
'月山': 'YBF',
'朔州': 'SUV',
'朗乡': 'LXB',
'望都': 'WDP',
'朝天': 'CTE',
'朝天南': 'CTY',
'朝阳': 'VBT',
'朝阳南': 'CYD',
'朝阳地': 'CDD',
'朝阳川': 'CYL',
'朝阳湖': 'CYE',
'朝阳镇': 'CZL',
'木里图': 'MUD',
'本溪': 'BXT',
'本溪新城': 'BVT',
'本溪湖': 'BHT',
'朱家沟': 'ZUB',
'朱家窑': 'ZUJ',
'朱日和': 'ZRC',
'朱砂古镇': 'ZSE',
'李家': 'LJB',
'李家坪': 'LIJ',
'李旺': 'VLJ',
'李石寨': 'LET',
'杏树': 'XSB',
'杏树屯': 'XDT',
'杜家': 'DJL',
'杜尔伯特': 'TKX',
'来宾': 'UBZ',
'来宾北': 'UCZ',
'来舟': 'LZS',
'杨岗': 'YRB',
'杨村': 'YBP',
'杨杖子': 'YZD',
'杨林': 'YLM',
'杨柳青': 'YQP',
'杨树岭': 'YAD',
'杨桥': 'YQA',
'杨陵': 'YSY',
'杨陵南': 'YEY',
'杭州': 'HZH',
'杭州东': 'HGH',
'杭州南': 'XHH',
'杭锦后旗': 'HDC',
'*': 'VYT',
'*北': 'OCT',
'松山湖北': 'KUQ',
'松树': 'SFT',
'松树镇': 'SSL',
'松桃': 'MZQ',
'松江': 'SAH',
'松江南': 'IMH',
'松江河': 'SJL',
'松江镇': 'OZL',
'松河': 'SBM',
'松滋': 'SIN',
'板城': 'BUP',
'板塘': 'NGQ',
'林东': 'LRC',
'林口': 'LKB',
'林海': 'LXX',
'林源': 'LYX',
'林盛堡': 'LBT',
'林西': 'LXC',
'果松': 'GSL',
'枝城': 'ZCN',
'枝江北': 'ZIN',
'枣庄': 'ZEK',
'枣庄东': 'ZNK',
'枣庄西': 'ZFK',
'枣强': 'ZVP',
'枣林': 'ZIV',
'枣阳': 'ZYN',
'枫林': 'FLN',
'柏果': 'BGM',
'柞水': 'ZSY',
'查布嘎': 'CBC',
'查干湖': 'VAT',
'柳园': 'DHR',
'柳园南': 'LNR',
'柳州': 'LZZ',
'柳林南': 'LKV',
'柳树屯': 'LSD',
'柳江': 'UQZ',
'柳河': 'LNL',
'柴岗': 'CGT',
'柴沟堡': 'CGV',
'柴河': 'CHB',
'树木岭': 'FMQ',
'栟茶': 'FWH',
'株洲': 'ZZQ',
'株洲南': 'KVQ',
'株洲西': 'ZAQ',
'根河': 'GEX',
'格尔木': 'GRO',
'桂平': 'GAZ',
'桂林': 'GLZ',
'桂林北': 'GBZ',
'桂林西': 'GEZ',
'桃山': 'TAB',
'桃村': 'TCK',
'桃村北': 'TOK',
'桐乡': 'TCH',
'桐城': 'TTH',
'桐子林': 'TEW',
'桐庐': 'TLU',
'桐柏': 'TBF',
'桐梓': 'TZW',
'桐梓东': 'TDE',
'桐梓北': 'TBE',
'桑园子': 'SAJ',
'桑根达来': 'OGC',
'桓台': 'VTK',
'桥头': 'QAT',
'桥西': 'QXJ',
'桦南': 'HNB',
'桦林': 'HIB',
'梁山': 'LMK',
'梁平': 'UQW',
'梁平南': 'LPE',
'梁底下': 'LDP',
'梅州': 'MOQ',
'梅河口': 'MHL',
'梧州': 'WZZ',
'梧州南': 'WBZ',
'梨树镇': 'LSB',
'棋子湾': 'QZQ',
'棕溪': 'ZOY',
'棠海': 'THM',
'楚山': 'CSB',
'楚雄': 'CUM',
'楚雄南': 'COM',
'榆中': 'IZJ',
'榆林': 'ALY',
'榆树': 'YRT',
'榆树台': 'YUT',
'榆树屯': 'YSX',
'榆树沟': 'YGP',
'榆次': 'YCV',
'榆社': 'YSV',
'榕江': 'RVW',
'槐荫': 'IYN',
'樟木头': 'ZOQ',
'樟木头东': 'ZRQ',
'樟树': 'ZSG',
'樟树东': 'ZOG',
'横峰': 'HFG',
'横沟桥东': 'HNN',
'横道河子': 'HDB',
'横道河子东': 'KUX',
'歙县': 'OVH',
'歙县北': 'NPH',
'正定': 'ZDP',
'正定机场': 'ZHP',
'正镶白旗': 'ZXC',
'步行街': 'BWW',
'武义': 'RYH',
'武义北': 'WDH',
'武乡': 'WVV',
'武功': 'WGY',
'武夷山': 'WAS',
'武夷山东': 'WCS',
'武夷山北': 'WBS',
'武威': 'WUJ',
'武威南': 'WWJ',
'武安': 'WAP',
'武山': 'WSJ',
'武当山': 'WRN',
'武昌': 'WCN',
'武汉': 'WHN',
'武清': 'WWP',
'武穴': 'WXN',
'武胜': 'WSE',
'武陟': 'WIF',
'武隆': 'WLW',
'歪头山': 'WIT',
'毛坝': 'MBY',
'毛坝关': 'MGY',
'毛陈': 'MHN',
'民乐': 'MBJ',
'民和南': 'MNO',
'民权': 'MQF',
'民权北': 'MIF',
'水家湖': 'SQH',
'水富': 'OTW',
'水泉': 'SID',
'水洋': 'OYP',
'水洞': 'SIL',
'水源': 'OYJ',
'永丰营': 'YYM',
'永乐店': 'YDY',
'永修': 'ACG',
'永嘉': 'URH',
'永城北': 'RGH',
'永安': 'YAS',
'永安乡': 'YNB',
'永安南': 'YQS',
'永定': 'YGS',
'永寿': 'ASY',
'永川': 'YCW',
'永川东': 'WMW',
'永州': 'AOQ',
'永康': 'RFH',
'永康南': 'QUH',
'永泰': 'YTS',
'永济': 'YIV',
'永济北': 'AJV',
'永登': 'YDJ',
'永福南': 'YBZ',
'永郎': 'YLW',
'汉中': 'HOY',
'汉口': 'HKN',
'汉寿': 'VSQ',
'汉川': 'HCN',
'汉沽': 'HGP',
'汉源': 'WHW',
'汉阴': 'HQY',
'汐子': 'XZD',
'汕头': 'OTQ',
'汕尾': 'OGQ',
'汝州': 'ROF',
'汝箕沟': 'RQJ',
'汝阳': 'RYF',
'江华': 'JHZ',
'江宁': 'JJH',
'江宁西': 'OKH',
'*': 'JUH',
'江所田': 'JOM',
'江桥': 'JQX',
'江永': 'JYZ',
'江油': 'JFW',
'江油北': 'JBE',
'江津': 'JJW',
'江源': 'SZL',
'江边村': 'JBG',
'江都': 'UDH',
'江门东': 'JWQ',
'池州': 'IYH',
'汤原': 'TYB',
'汤山城': 'TCT',
'汤旺河': 'THB',
'汤池': 'TCX',
'汤逊湖': 'THN',
'汤阴': 'TYF',
'汨罗': 'MLQ',
'汨罗东': 'MQQ',
'汪清': 'WQL',
'汾河': 'FEV',
'汾阳': 'FAV',
'沁县': 'QVV',
'沁阳': 'QYF',
'沂南': 'YNK',
'沂水': 'YUK',
'沃皮': 'WPT',
'沈丘': 'SQN',
'沈家': 'OJB',
'沈家河': 'OJJ',
'沈阳': 'SYT',
'沈阳东': 'SDT',
'沈阳北': 'SBT',
'沈阳南': 'SOT',
'沈阳西': 'OOT',
'沐滂': 'MPQ',
'沙县': 'SAS',
'沙后所': 'SSD',
'沙坡头': 'SFJ',
'沙坪坝': 'CYW',
'沙城': 'SCP',
'沙岭子': 'SLP',
'沙桥': 'SQM',
'沙沱': 'SFM',
'沙河': 'SHP',
'沙河口': 'SKT',
'沙河市': 'VOP',
'沙海': 'SED',
'沙湾县': 'SXR',
'沟帮子': 'GBD',
'沥林北': 'KBQ',
'沧州': 'COP',
'沧州西': 'CBP',
'沭阳': 'FMH',
'河口北': 'HBM',
'河口南': 'HKJ',
'河唇': 'HCZ',
'河津': 'HJV',
'河源': 'VIQ',
'河边': 'HBV',
'河间西': 'HXP',
'治安': 'ZAD',
'沿河城': 'YHP',
'泉州': 'QYS',
'泉州东': 'QRS',
'泉阳': 'QYL',
'泊头': 'BZP',
'法启': 'FQE',
'泗县': 'GPH',
'泗水': 'OSK',
'泗洪': 'GQH',
'泗阳': 'MPH',
'泡子': 'POD',
'泥河子': 'NHD',
'泰和': 'THG',
'泰宁': 'TNS',
'泰安': 'TMK',
'泰山': 'TAK',
'泰州': 'UTH',
'泰来': 'TLX',
'泽普': 'ZPR',
'泽润里': 'ZLM',
'泾县': 'LOH',
'泾川': 'JAJ',
'洋县西': 'YXY',
'洋河': 'GTH',
'洛湾三江': 'KRW',
'洛门': 'LMJ',
'洛阳': 'LYF',
'洛阳东': 'LDF',
'洛阳龙门': 'LLF',
'洞井': 'FWQ',
'洞口': 'DKA',
'洞庙河': 'DEP',
'洪河': 'HPB',
'洪洞': 'HDV',
'洪洞西': 'HTV',
'洮南': 'TVT',
'流水沟': 'USP',
'济南': 'JNK',
'济南东': 'MDK',
'济南西': 'JGK',
'济宁': 'JIK',
'济源': 'JYF',
'浑河': 'HHT',
'浠水': 'XZN',
'浩良河': 'HHB',
'浮图峪': 'FYP',
'海东西': 'HDO',
'海伦': 'HLB',
'海北': 'HEB',
'海口': 'VUQ',
'海口东': 'HMQ',
'海坨子': 'HZT',
'海城': 'HCT',
'海城西': 'HXT',
'海宁': 'HNH',
'海宁西': 'EUH',
'海安': 'HIH',
'海拉尔': 'HRX',
'海晏': 'HFO',
'海林': 'HRB',
'海林北': 'KBX',
'海湾': 'RWH',
'海石湾': 'HSO',
'海门': 'HMU',
'海阳北': 'HEK',
'海龙': 'HIL',
'涉县': 'OEP',
'涞源': 'LYP',
'涟源': 'LAQ',
'涡阳': 'GYH',
'涪陵': 'FLW',
'涪陵北': 'FEW',
'涵江': 'HJS',
'涿州': 'ZXP',
'涿州东': 'ZAP',
'淄博': 'ZBK',
'淄博北': 'ZRK',
'淮北': 'HRH',
'淮北北': 'PLH',
'淮南': 'HAH',
'淮南东': 'HOH',
'淮安': 'AUH',
'淮安南': 'AMH',
'淮滨': 'HVN',
'深井子': 'SWT',
'深圳': 'SZQ',
'深圳东': 'BJQ',
'深圳北': 'IOQ',
'深圳坪山': 'IFQ',
'深圳西': 'OSQ',
'深州': 'OZP',
'清华园': 'QHP',
'清原': 'QYT',
'清徐': 'QUV',
'清水': 'QUJ',
'清水北': 'QEJ',
'清水县': 'QIJ',
'清河': 'QIP',
'清河城': 'QYP',
'清河门': 'QHD',
'清河门北': 'QBD',
'清涧县': 'QNY',
'清远': 'QBQ',
'渑池': 'MCF',
'渑池南': 'MNF',
'渠县': 'QRW',
'渠旧': 'QJZ',
'渠黎': 'QLZ',
'温岭': 'VHH',
'温州': 'RZH',
'温州南': 'VRH',
'温春': 'WDB',
'温江': 'WJE',
'渭南': 'WNY',
'渭南北': 'WBY',
'渭南南': 'WVY',
'渭南镇': 'WNJ',
'渭津': 'WJL',
'渭源': 'WEJ',
'湖口': 'HKG',
'湖州': 'VZH',
'湘乡': 'XXQ',
'湘府路': 'FVQ',
'湘潭': 'XTQ',
'湘潭北': 'EDQ',
'湛江': 'ZJZ',
'湛江西': 'ZWQ',
'湟源': 'HNO',
'湾沟': 'WGL',
'溆浦': 'EPQ',
'溆浦南': 'EMQ',
'源潭': 'YTQ',
'源迁': 'AQK',
'溧水': 'LDH',
'溧阳': 'LEH',
'滁州': 'CXH',
'滁州北': 'CUH',
'滕州': 'TXK',
'滕州东': 'TEK',
'满归': 'MHX',
'满洲里': 'MLX',
'滦县': 'UXP',
'滦平': 'UPP',
'滦河': 'UDP',
'滦河沿': 'UNP',
'滨州': 'BIK',
'滨江': 'BJB',
'滨海': 'YKP',
'滨海北': 'FCP',
'滨海港': 'BGU',
'滨海西': 'FHP',
'滴道': 'DDB',
'漠河': 'MVX',
'漫水湾': 'MKW',
'漯河': 'LON',
'漯河西': 'LBN',
'漳县': 'ZXJ',
'漳州': 'ZUS',
'漳州东': 'GOS',
'漳平': 'ZPS',
'漳平西': 'ZXG',
'漳浦': 'ZCS',
'潍坊': 'WFK',
'潍坊北': 'WJK',
'潘家店': 'PDP',
'潜江': 'QJN',
'潞城': 'UTP',
'潢川': 'KCN',
'潮州': 'CKQ',
'潮汕': 'CBQ',
'潮阳': 'CNQ',
'潼关': 'TGY',
'潼南': 'TVW',
'澄城': 'CUY',
'澧县': 'LEQ',
'濑湍': 'LVZ',
'濮阳': 'PYF',
'灌水': 'GST',
'火连寨': 'HLT',
'灯塔': 'DGT',
'灵丘': 'LVV',
'灵宝': 'LBF',
'灵宝西': 'LPF',
'灵武': 'LNJ',
'灵璧': 'GMH',
'灵石': 'LSV',
'灵石东': 'UDV',
'炎陵': 'YAG',
'烟台': 'YAK',
'烟台南': 'YLK',
'烟台西': 'YTK',
'烟筒屯': 'YUX',
'烟筒山': 'YSL',
'热水': 'RSD',
'焉耆': 'YSR',
'焦作': 'JOF',
'焦作东': 'WEF',
'照福铺': 'ZFM',
'熊岳城': 'XYT',
'燕子砭': 'YZY',
'燕家庄': 'AZK',
'燕山': 'AOP',
'燕岗': 'YGW',
'燕郊': 'AJP',
'牙克石': 'YKX',
'牙屯堡': 'YTZ',
'牛家': 'NJB',
'牛心台': 'NXT',
'牛河梁': 'LKT',
'牟平': 'MBK',
'牡丹江': 'MDB',
'犀浦': 'XIW',
'犀浦东': 'XAW',
'独山': 'RWW',
'独立屯': 'DTX',
'狮山': 'KSQ',
'狮山北': 'NSQ',
'狼尾山': 'LRJ',
'猛洞河': 'MUQ',
'玉屏': 'YZW',
'玉山': 'YNG',
'玉山南': 'YGG',
'玉林': 'YLZ',
'玉泉': 'YQB',
'玉溪': 'AXM',
'玉溪西': 'YXM',
'玉田县': 'ATP',
'玉石': 'YSJ',
'玉舍': 'AUM',
'玉门': 'YXJ',
'王兆屯': 'WZB',
'王团庄': 'WZJ',
'王安镇': 'WVP',
'王家湾': 'WJJ',
'王家营西': 'KNM',
'王岗': 'WGB',
'王府': 'WUT',
'王杨': 'WYB',
'王瞳': 'WTP',
'玛纳斯': 'MSR',
'玛纳斯湖': 'MNR',
'珞璜南': 'LNE',
'珠斯花': 'ZHD',
'珠海': 'ZHQ',
'珠海北': 'ZIQ',
'珠琳': 'ZOM',
'珠窝': 'ZOP',
'班猫箐': 'BNM',
'珲春': 'HUL',
'琼海': 'QYQ',
'瑞安': 'RAH',
'瑞昌': 'RCG',
'瑞昌西': 'RXG',
'瑞金': 'RJG',
'璧山': 'FZW',
'瓜州': 'GZJ',
'瓢儿屯': 'PRT',
'瓦屋山': 'WAH',
'瓦房店': 'WDT',
'瓦房店西': 'WXT',
'瓦拉干': 'WVX',
'瓦窑田': 'WIM',
'甘旗卡': 'GQD',
'甘河': 'GAX',
'甘泉': 'GQY',
'甘泉北': 'GEY',
'甘洛': 'VOW',
'甘草店': 'GDJ',
'甘谷': 'GGJ',
'田东': 'TDZ',
'田东北': 'TBZ',
'田师府': 'TFT',
'田心东': 'KQQ',
'田林': 'TFZ',
'田阳': 'TRZ',
'甲山': 'JOP',
'电白': 'NWQ',
'甸心': 'DXM',
'界首市': 'JUN',
'略阳': 'LYY',
'疏勒': 'SUR',
'疏勒河': 'SHJ',
'登沙河': 'DWT',
'白云鄂博': 'BEC',
'白城': 'BCT',
'白壁关': 'BGV',
'白奎堡': 'BKB',
'白山市': 'HJL',
'白文东': 'BCV',
'白旗': 'BQP',
'白水县': 'BGY',
'白水江': 'BSY',
'白水镇': 'BUM',
'白沙坡': 'BPM',
'白沙铺': 'BSN',
'白沟': 'FEP',
'白河': 'BEL',
'白河东': 'BIY',
'白河县': 'BEY',
'白泉': 'BQL',
'白洋淀': 'FWP',
'白涧': 'BAP',
'白狼': 'BAT',
'白石山': 'BAL',
'白芨沟': 'BJJ',
'白银市': 'BNJ',
'白银西': 'BXJ',
'白音他拉': 'BID',
'白音华南': 'FNC',
'白音察干': 'BYC',
'白音胡硕': 'BCD',
'白马井': 'BFQ',
'白鸡坡': 'BBM',
'百宜': 'FHW',
'百浪': 'BRZ',
'百色': 'BIZ',
'百里峡': 'AAP',
'皇姑屯': 'HTT',
'皋兰': 'GEJ',
'皮口': 'PUT',
'皮口南': 'PKT',
'皮山': 'PSR',
'益阳': 'AEQ',
'盐城': 'AFH',
'盐城北': 'AEH',
'盐池': 'YKJ',
'盐津': 'AEW',
'盖州': 'GXT',
'盖州西': 'GAT',
'盘关': 'PAM',
'盘山': 'PUD',
'盘州': 'PAE',
'盘锦': 'PVD',
'盘锦北': 'PBD',
'盘龙城': 'PNN',
'眉山': 'MSW',
'眉山东': 'IUW',
'石人': 'SRL',
'石人城': 'SRB',
'石嘴山': 'QQJ',
'石坝': 'OBJ',
'石城': 'SCT',
'石头': 'OTB',
'石家庄': 'SJP',
'石家庄东': 'SXP',
'石家庄北': 'VVP',
'石山': 'SAD',
'石岘': 'SXL',
'石岭': 'SOL',
'石峡子': 'SXJ',
'石景山南': 'SRP',
'石林': 'SLM',
'石林南': 'LNM',
'石林西': 'SYM',
'石柱县': 'OSW',
'石桥': 'SQE',
'石桥子': 'SQT',
'石梯': 'STE',
'石河子': 'SZR',
'石泉县': 'SXY',
'石磷': 'SPB',
'石门县': 'OMQ',
'石门县北': 'VFQ',
'石龙': 'SLQ',
'砀山': 'DKH',
'砀山南': 'PRH',
'砚川': 'YYY',
'确山': 'QSN',
'碧江': 'BLQ',
'碧鸡关': 'BJM',
'碱厂': 'JUT',
'碾子山': 'NZX',
'磁县': 'CIP',
'磁山': 'CSP',
'磁窑': 'CYK',
'磁西': 'CRP',
'磐安镇': 'PAJ',
'磐石': 'PSL',
'磨刀石': 'MOB',
'礼泉': 'LGY',
'祁东': 'QMQ',
'祁东北': 'QRQ',
'祁县': 'QXV',
'祁县东': 'QGV',
'祁家堡': 'QBT',
'祁门': 'QIH',
'祁阳': 'QWQ',
'祁阳北': 'QVQ',
'神头': 'SEV',
'神州': 'SRQ',
'神木': 'HMY',
'神木南': 'OMY',
'神树': 'SWB',
'神池': 'SMV',
'祥云': 'XQM',
'祥云西': 'EXM',
'禄丰南': 'LQM',
'福利区': 'FLJ',
'福利屯': 'FTB',
'福安': 'FAS',
'福山口': 'FKP',
'福山镇': 'FZQ',
'福州': 'FZS',
'福州南': 'FYS',
'福泉': 'VMW',
'福海': 'FHR',
'福清': 'FQS',
'福田': 'NZQ',
'福鼎': 'FES',
'禹城': 'YCK',
'禹城东': 'YSK',
'离堆公园': 'INW',
'秀山': 'ETW',
'秦安': 'QGJ',
'秦家': 'QJB',
'秦家庄': 'QZV',
'秦岭': 'QLY',
'秦皇岛': 'QTP',
'秧草地': 'YKM',
'稷山': 'JVV',
'穆棱': 'MLB',
'窑上': 'ASP',
'立志': 'LZX',
'章丘': 'ZTK',
'章丘北': 'ZVK',
'章党': 'ZHT',
'章古台': 'ZGD',
'端州': 'WZQ',
'竹园坝': 'ZAW',
'笔架山': 'BSB',
'简阳': 'JYW',
'简阳南': 'JOW',
'米易': 'MMW',
'米沙子': 'MST',
'米脂': 'MEY',
'精河': 'JHR',
'精河南': 'JIR',
'索伦': 'SNT',
'索图罕': 'SHX',
'紫荆关': 'ZYP',
'*': 'ZVY',
'綦江': 'QJW',
'綦江东': 'QDE',
'繁峙': 'FSV',
'繁昌西': 'PUH',
'红光镇': 'IGW',
'红兴隆': 'VHB',
'红安': 'HWN',
'红安西': 'VXN',
'红寺堡': 'HSJ',
'红山': 'VSB',
'红岘台': 'HTJ',
'红彦': 'VIX',
'红星': 'VXB',
'红果': 'HEM',
'红江': 'HFM',
'红砂岘': 'VSJ',
'红花沟': 'VHD',
'纪家沟': 'VJD',
'纳雍': 'NYE',
'纸坊东': 'ZMN',
'绅坊': 'OLH',
'织金': 'IZW',
'织金北': 'ZJE',
'绍兴': 'SOH',
'绍兴东': 'SSH',
'绍兴北': 'SLH',
'经棚': 'JPC',
'绕阳河': 'RHD',
'统军庄': 'TZP',
'绥中': 'SZD',
'绥中北': 'SND',
'绥化': 'SHB',
'绥德': 'ODY',
'绥棱': 'SIB',
'绥芬河': 'SFB',
'绥阳': 'SYB',
'绩溪北': 'NRH',
'绩溪县': 'JRH',
'绵阳': 'MYW',
'绿化': 'LWJ',
'绿博园': 'LCF',
'缙云': 'JYH',
'缙云西': 'PYH',
'罗城': 'VCZ',
'罗山': 'LRN',
'罗平': 'LPM',
'罗江': 'LJW',
'罗江东': 'IKW',
'罗源': 'LVS',
'羊堡': 'ABM',
'羊尾哨': 'YWM',
'羊者窝': 'AEM',
'羊臼河': 'YHM',
'羊草': 'YAB',
'羊马': 'YME',
'美兰': 'MHQ',
'美溪': 'MEB',
'老城镇': 'ACQ',
'老府': 'UFD',
'老莱': 'LAX',
'老营': 'LXL',
'老边': 'LLT',
'耒阳': 'LYQ',
'耒阳西': 'LPQ',
'聊城': 'UCK',
'肃宁': 'SYP',
'肇东': 'ZDB',
'肇庆': 'ZVQ',
'肇庆东': 'FCQ',
'肥东': 'FIH',
'背荫河': 'BYB',
'胜利镇': 'OLB',
'胜芳': 'SUP',
'胶州': 'JXK',
'胶州北': 'JZK',
'能家': 'NJD',
'自贡': 'ZGW',
'舍力虎': 'VLD',
'舒兰': 'SLL',
'舒城': 'OCH',
'良各庄': 'LGP',
'艾家村': 'AJJ',
'艾河': 'AHP',
'芙蓉南': 'KCQ',
'芜湖': 'WHH',
'芦台': 'LTP',
'芦沟': 'LOM',
'芦溪': 'LUG',
'芦潮港': 'UCH',
'芨岭': 'JLJ',
'花博山': 'KBT',
'花园': 'HUN',
'花园口': 'HYT',
'花家庄': 'HJM',
'花山南': 'KNN',
'花桥': 'VQH',
'花棚子': 'HZM',
'花湖': 'KHN',
'芷江': 'ZPQ',
'苇子沟': 'WZL',
'苇河': 'WHB',
'苇河西': 'WIB',
'苍南': 'CEH',
'苍溪': 'CXE',
'苍石': 'CST',
'苏家屯': 'SXT',
'苏尼特左旗': 'ONC',
'苏州': 'SZH',
'苏州北': 'OHH',
'苏州园区': 'KAH',
'苏州新区': 'ITH',
'英吉沙': 'YIR',
'英德': 'YDQ',
'英德西': 'IIQ',
'茂名': 'MDQ',
'茂名西': 'MMZ',
'茂林': 'MLD',
'茂舍祖': 'MOM',
'范各庄': 'FGP',
'范家屯': 'FTT',
'范镇': 'VZK',
'茅岭': 'MLZ',
'茅草坪': 'KPM',
'茶卡': 'CVO',
'茶陵': 'CDG',
'茶陵南': 'CNG',
'荆州': 'JBN',
'荆门': 'JMN',
'草市': 'CSL',
'草河口': 'CKT',
'草海': 'WBW',
'荣成': 'RCK',
'荣昌': 'RCW',
'荣昌北': 'RQW',
'荷塘': 'KXQ',
'莆田': 'PTS',
'莎车': 'SCR',
'莒南': 'JOK',
'莒县': 'JKK',
'莫尔道嘎': 'MRX',
'莱芜东': 'LWK',
'莱芜西': 'UXK',
'莱西': 'LXK',
'莱西北': 'LBK',
'莱阳': 'LYK',
'莲江口': 'LHB',
'获嘉': 'HJF',
'菇园': 'GYL',
'菏泽': 'HIK',
'萍乡': 'PXG',
'萍乡北': 'PBG',
'营口': 'YKT',
'营口东': 'YGT',
'营城子': 'YCT',
'营山': 'NUW',
'营盘水': 'YZJ',
'营街': 'YAM',
'萧县北': 'QSH',
'萨拉齐': 'SLC',
'落坡岭': 'LPP',
'落垡': 'LOP',
'葛店南': 'GNN',
'葛根庙': 'GGT',
'葡萄菁': 'PTW',
'董家口': 'DTK',
'葫芦岛': 'HLD',
'葫芦岛北': 'HPD',
'葵潭': 'KTQ',
'蒙自': 'MZM',
'蒙自北': 'MBM',
'蒲城': 'PCY',
'蒲城东': 'PEY',
'蒲江': 'PJE',
'蓝村': 'LCK',
'蓟州': 'JIP',
'蓟州北': 'JKP',
'蓬安': 'PAW',
'蓬溪': 'KZW',
'蓬莱市': 'POK',
'蔡家坡': 'CJY',
'蔡家崖': 'EBV',
'蔡家沟': 'CJT',
'蔡山': 'CON',
'蔺家楼': 'ULK',
'蕲春': 'QRN',
'藁城': 'GEP',
'藁城南': 'GUP',
'藤县': 'TAZ',
'虎什哈': 'HHP',
'虎林': 'VLB',
'虎石台': 'HUT',
'虎门': 'IUQ',
'虞城县': 'IXH',
'虢镇': 'GZY',
'蚌埠': 'BBH',
'蚌埠南': 'BMH',
'蛟河': 'JHL',
'蛟河西': 'JOL',
'蜀河': 'SHY',
'融安': 'RAZ',
'融水': 'RSZ',
'衡南': 'HNG',
'衡山': 'HSQ',
'衡山西': 'HEQ',
'衡水': 'HSP',
'衡水北': 'IHP',
'衡阳': 'HYQ',
'衡阳东': 'HVQ',
'衢州': 'QEH',
'裴德': 'PDB',
'褚家湾': 'CWJ',
'襄垣': 'EIF',
'襄汾': 'XFV',
'襄汾西': 'XTV',
'襄河': 'XXB',
'襄阳': 'XFN',
'襄阳东': 'XWN',
'西丰': 'XFT',
'西乌旗': 'XWC',
'西乡': 'XQY',
'西八里': 'XLP',
'西哲里木': 'XRD',
'西固': 'XIJ',
'西固城': 'XUJ',
'西大庙': 'XMP',
'西宁': 'XNO',
'西安': 'XAY',
'西安北': 'EAY',
'西安南': 'CAY',
'西小召': 'XZC',
'西岗子': 'NBB',
'西峡': 'XIF',
'西平': 'XPN',
'西平西': 'EGQ',
'西昌': 'ECW',
'西昌南': 'ENW',
'西来': 'XLE',
'西林': 'XYB',
'西柳': 'GCT',
'西渡': 'XDA',
'西湖东': 'WDQ',
'西街口': 'EKM',
'西阳村': 'XQF',
'西麻山': 'XMB',
'观沙岭': 'FKQ',
'角美': 'JES',
'讷河': 'NHX',
'许三湾': 'XSJ',
'许家台': 'XTJ',
'许家屯': 'XJT',
'许昌': 'XCF',
'许昌东': 'XVF',
'诏安': 'ZDS',
'诸城': 'ZQK',
'诸暨': 'ZDH',
'读书铺': 'DPM',
'谢家镇': 'XMT',
'谭家井': 'TNJ',
'谷城': 'GCN',
'谷山': 'FFQ',
'豆庄': 'ROP',
'豆张庄': 'RZP',
'豆罗': 'DLV',
'贲红': 'BVC',
'贵安': 'GAE',
'贵定': 'GTW',
'贵定北': 'FMW',
'贵定南': 'IDW',
'贵定县': 'KIW',
'贵港': 'GGZ',
'贵溪': 'GXG',
'贵阳': 'GIW',
'贵阳东': 'KEW',
'贵阳北': 'KQW',
'费县': 'FXK',
'贺家店': 'HJJ',
'贺州': 'HXZ',
'贺胜桥东': 'HLN',
'贾鲁河': 'JLF',
'资中': 'ZZW',
'资中北': 'WZW',
'资溪': 'ZXS',
'资阳': 'ZYW',
'资阳北': 'FYW',
'赛汗塔拉': 'SHC',
'赣州': 'GZG',
'赣榆': 'GYU',
'赤壁': 'CBN',
'赤壁北': 'CIN',
'赤峰': 'CFD',
'赤峰西': 'CID',
'赵光': 'ZGB',
'赵城': 'ZCV',
'赶水': 'GSW',
'赶水东': 'GDE',
'超梁沟': 'CYP',
'越西': 'YHW',
'路口铺': 'LKQ',
'车转湾': 'CWM',
'轩岗': 'XGV',
'轮台': 'LAR',
'辛集': 'ENP',
'辛集南': 'IJP',
'辰清': 'CQB',
'辰溪': 'CXQ',
'辽中': 'LZD',
'辽源': 'LYL',
'辽阳': 'LYT',
'达坂城': 'DCR',
'达家沟': 'DJT',
'达州': 'RXW',
'达拉特旗': 'DIC',
'达拉特西': 'DNC',
'达连河': 'DCB',
'迁安': 'QQP',
'迎宾路': 'YFW',
'迎春': 'YYB',
'运城': 'YNV',
'运城北': 'ABV',
'运粮河': 'YEF',
'近海': 'JHD',
'进贤': 'JUG',
'进贤南': 'JXG',
'连云港': 'UIH',
'连云港东': 'UKH',
'连山关': 'LGT',
'连江': 'LKS',
'迤资': 'YQM',
'通化': 'THL',
'通化县': 'TXL',
'通北': 'TBB',
'通安驿': 'TAJ',
'通州': 'TOP',
'通州西': 'TAP',
'通榆': 'KTT',
'通沟': 'TOL',
'通海': 'TAM',
'通渭': 'TWJ',
'通辽': 'TLD',
'通远堡': 'TYT',
'通远堡西': 'TST',
'通途': 'TUT',
'通道': 'TRQ',
'遂宁': 'NIW',
'遂平': 'SON',
'遂溪': 'SXZ',
'道州': 'DFZ',
'道清': 'DML',
'道滘': 'RRQ',
'遵义': 'ZYE',
'遵义南': 'ZNE',
'遵义西': 'ZIW',
'邓州': 'DOF',
'邛崃': 'QLE',
'邢台': 'XTP',
'邢台东': 'EDP',
'那曲': 'NQO',
'那罗': 'ULZ',
'那铺': 'NPZ',
'邯郸': 'HDP',
'邯郸东': 'HPP',
'邳州': 'PJH',
'邵东': 'FIQ',
'邵家堂': 'SJJ',
'邵武': 'SWS',
'邵阳': 'SYQ',
'邵阳北': 'OVQ',
'邵阳西': 'SXA',
'邹城': 'ZIK',
'邹平': 'ZLK',
'郁南': 'YKQ',
'郑州': 'ZZF',
'郑州东': 'ZAF',
'郑州西': 'XPF',
'郓城': 'YPK',
'郫县': 'PWW',
'郫县西': 'PCW',
'郭家店': 'GDT',
'郭磊庄': 'GLP',
'郯城': 'TZK',
'郴州': 'CZQ',
'郴州西': 'ICQ',
'都匀': 'RYW',
'都匀东': 'KJW',
'都昌': 'DCG',
'都格': 'DMM',
'都江堰': 'DDW',
'鄂尔多斯': 'EEC',
'鄂州': 'ECN',
'鄂州东': 'EFN',
'鄄城': 'JCK',
'鄠邑': 'KXY',
'鄯善': 'SSR',
'鄯善北': 'SMR',
'鄱阳': 'PYG',
'酉阳': 'AFW',
'酒泉': 'JQJ',
'酒泉南': 'JNJ',
'醴陵': 'LLG',
'醴陵东': 'UKQ',
'里木店': 'LMB',
'重庆': 'CQW',
'重庆北': 'CUW',
'重庆南': 'CRW',
'重庆西': 'CXW',
'野三坡': 'AIP',
'金华': 'JBH',
'金华南': 'RNH',
'金坑': 'JKT',
'金城江': 'JJZ',
'金宝屯': 'JBD',
'金寨': 'JZH',
'金山北': 'EGH',
'金山屯': 'JTB',
'金州': 'JZT',
'金昌': 'JCJ',
'金月湾': 'PYQ',
'金杖子': 'JYD',
'金沟屯': 'VGP',
'金河': 'JHX',
'金银潭': 'JTN',
'金马村': 'JMM',
'钟家村': 'ZJY',
'钟山': 'ZSZ',
'钟山西': 'ZAZ',
'钟祥': 'ZTN',
'钦州': 'QRZ',
'钦州东': 'QDZ',
'铁刹山': 'PST',
'铁力': 'TLB',
'铁厂': 'TCL',
'铁岭': 'TLT',
'铁岭西': 'PXT',
'铜仁': 'RDQ',
'铜仁南': 'TNW',
'铜陵': 'TJH',
'铜陵北': 'KXH',
'银川': 'YIJ',
'银浪': 'YJX',
'银滩': 'CTQ',
'银瓶': 'KPQ',
'锡林浩特': 'XTC',
'锦州': 'JZD',
'锦州南': 'JOD',
'锦河': 'JHB',
'锦界': 'JEY',
'镇城底': 'ZDV',
'镇安': 'ZEY',
'镇平': 'ZPF',
'镇江': 'ZJH',
'镇江南': 'ZEH',
'镇西': 'ZVT',
'镇赉': 'ZLT',
'镇远': 'ZUW',
'镜铁山': 'JVJ',
'长临河': 'FVH',
'长兴': 'CBH',
'长兴南': 'CFH',
'长农': 'CNJ',
'长冲': 'CCM',
'长坡岭': 'CPM',
'长垣': 'CYF',
'长城': 'CEJ',
'长寿': 'EFW',
'长寿北': 'COW',
'长寿湖': 'CSE',
'长山屯': 'CVT',
'长岭子': 'CLT',
'长庆桥': 'CQJ',
'长征': 'CZJ',
'长春': 'CCT',
'长春南': 'CET',
'长春西': 'CRT',
'长武': 'CWY',
'长汀': 'CES',
'长汀南': 'CNS',
'长汀镇': 'CDB',
'长沙': 'CSQ',
'长沙南': 'CWQ',
'长沙西': 'RXQ',
'长治': 'CZF',
'长治北': 'CBF',
'长甸': 'CDT',
'长葛': 'CEF',
'长阳': 'CYN',
'门': 'EMS',
'门源': 'MYO',
'闵集': 'MJN',
'闻喜': 'WXV',
'闻喜西': 'WOV',
'闽清': 'MQS',
'闽清北': 'MBS',
'阆中': 'LZE',
'阎良': 'YNY',
'阜南': 'FNH',
'阜宁': 'AKH',
'阜宁东': 'FDU',
'阜新': 'FOT',
'阜新南': 'FXD',
'阜阳': 'FYH',
'防城港北': 'FBZ',
'阳东': 'WLQ',
'阳信': 'YVK',
'阳城': 'YNF',
'阳岔': 'YAL',
'阳平关': 'YAY',
'阳新': 'YON',
'阳明堡': 'YVV',
'阳春': 'YQQ',
'阳曲': 'YQV',
'阳曲西': 'IQV',
'阳朔': 'YCZ',
'阳江': 'WRQ',
'阳泉': 'AQP',
'阳泉北': 'YPP',
'阳泉曲': 'YYV',
'阳澄湖': 'AIH',
'阳西': 'WMQ',
'阳谷': 'YIK',
'阳邑': 'ARP',
'阳高': 'YOV',
'阿克苏': 'ASR',
'阿克陶': 'AER',
'阿勒泰': 'AUR',
'阿南庄': 'AZM',
'阿图什': 'ATR',
'阿城': 'ACB',
'阿城北': 'ABB',
'阿尔山': 'ART',
'阿尔山北': 'ARX',
'阿巴嘎旗': 'AQC',
'阿房宫': 'EGY',
'阿拉山口': 'AKR',
'阿木尔': 'JTX',
'阿里河': 'AHX',
'阿金': 'AJD',
'阿龙山': 'ASX',
'陆丰': 'LLQ',
'陆川': 'LKZ',
'陆良': 'LRM',
'陇南': 'INJ',
'陇县': 'LXY',
'陇西': 'LXJ',
'陈官营': 'CAJ',
'陈相屯': 'CXT',
'陵城': 'LGK',
'陵水': 'LIQ',
'陶家屯': 'TOT',
'陶赖昭': 'TPT',
'隆化': 'UHP',
'隆回': 'LHA',
'隆安东': 'IDZ',
'隆昌': 'LCW',
'隆昌北': 'NWW',
'随州': 'SZN',
'雁石南': 'YMS',
'雁翅': 'YAP',
'雁荡山': 'YGH',
'雅安': 'YAE',
'集宁南': 'JAC',
'集安': 'JAL',
'雨格': 'VTM',
'零陵': 'UWZ',
'雷州': 'UAQ',
'霍城': 'SER',
'霍尔果斯': 'HFR',
'霍州': 'HZV',
'霍州东': 'HWV',
'霍林郭勒': 'HWD',
'霍邱': 'FBH',
'霞浦': 'XOS',
'露水河': 'LUL',
'霸州': 'RMP',
'霸州西': 'FOP',
'青县': 'QXP',
'青城山': 'QSW',
'青堆': 'QET',
'青山': 'QSB',
'青岛': 'QDK',
'青岛北': 'QHK',
'青岛西': 'QUK',
'青川': 'QCE',
'青州市': 'QZK',
'青州市北': 'QOK',
'青田': 'QVH',
'青白江东': 'QFW',
'青神': 'QVW',
'青莲': 'QEW',
'青铜峡': 'QTJ',
'青龙': 'QIB',
'青龙山': 'QGH',
'靖宇': 'JYL',
'靖州': 'JEQ',
'靖西': 'JMZ',
'靖边': 'JIY',
'靖远': 'JYJ',
'靖远西': 'JXJ',
'静海': 'JHP',
'革居': 'GEM',
'鞍山': 'AST',
'鞍山西': 'AXT',
'韦庄': 'WZY',
'韩城': 'HCY',
'韩府湾': 'HXJ',
'韩麻营': 'HYP',
'韶关': 'SNQ',
'韶关东': 'SGQ',
'韶山': 'SSQ',
'韶山南': 'INQ',
'项城': 'ERN',
'顺义': 'SOP',
'顺德': 'ORQ',
'顺德学院': 'OJQ',
'顺昌': 'SCS',
'颍上': 'YVH',
'额济纳': 'EJC',
'风陵渡': 'FLV',
'饶平': 'RVQ',
'饶阳': 'RVP',
'首山': 'SAT',
'香兰': 'XNB',
'香坊': 'XFB',
'香樟路': 'FNQ',
'香港西九龙': 'XJA',
'马三家': 'MJT',
'马兰': 'MLR',
'马林': 'MID',
'马桥河': 'MQB',
'马皇': 'MHZ',
'马莲河': 'MHB',
'马踏': 'PWQ',
'马鞍山': 'MAH',
'马鞍山东': 'OMH',
'马龙': 'MGM',
'驻马店': 'ZDN',
'驻马店西': 'ZLN',
'驼腰岭': 'TIL',
'骆驼巷': 'LTJ',
'高台': 'GTJ',
'高台南': 'GAJ',
'高各庄': 'GGP',
'高安': 'GCG',
'高密': 'GMK',
'高密北': 'GVK',
'高山子': 'GSD',
'高州': 'GSQ',
'高平': 'GPF',
'高村': 'GCV',
'高桥镇': 'GZD',
'高楞': 'GLB',
'高楼房': 'GFM',
'高滩': 'GAY',
'高碑店': 'GBP',
'高碑店东': 'GMP',
'高花': 'HGD',
'高邑': 'GIP',
'高邑西': 'GNP',
'魏善庄': 'WSP',
'魏杖子': 'WKD',
'鲁山': 'LAF',
'鲁番': 'LVM',
'鲅鱼圈': 'BYT',
'鲘门': 'KMQ',
'鳌江': 'ARH',
'鸡东': 'JOB',
'鸡冠山': 'JST',
'鸡西': 'JXB',
'鸭园': 'YYL',
'鸳鸯镇': 'YYJ',
'鹤北': 'HMB',
'鹤壁': 'HAF',
'鹤壁东': 'HFF',
'鹤岗': 'HGB',
'鹤庆': 'HQM',
'鹤立': 'HOB',
'鹰手营子': 'YIP',
'鹰潭': 'YTG',
'鹰潭北': 'YKG',
'鹿寨': 'LIZ',
'鹿寨北': 'LSZ',
'鹿道': 'LDL',
'麓谷': 'BNQ',
'麦园': 'MYS',
'麻城': 'MCN',
'麻城北': 'MBN',
'麻尾': 'VAW',
'麻山': 'MAB',
'麻阳': 'MVQ',
'黄冈': 'KGN',
'黄冈东': 'KAN',
'黄冈西': 'KXN',
'黄口': 'KOH',
'黄土店': 'HKP',
'黄山': 'HKH',
'黄山北': 'NYH',
'黄州': 'VON',
'黄村': 'HCP',
'黄松甸': 'HDL',
'黄柏': 'HBL',
'黄梅': 'VEH',
'黄河景区': 'HCF',
'黄泥河': 'HHL',
'黄流': 'KLQ',
'黄瓜园': 'HYM',
'黄石': 'HSN',
'黄石东': 'OSN',
'黄石北': 'KSN',
'黄羊滩': 'HGJ',
'黄羊镇': 'HYJ',
'黄花筒': 'HUD',
'黄陵': 'ULY',
'黄陵南': 'VLY',
'黎城': 'UCP',
'黎塘': 'LTZ',
'黑井': 'HIM',
'黑冲滩': 'HCJ',
'黑台': 'HQB',
'黑山北': 'HQT',
'黑山寺': 'HVP',
'黑旺': 'HWK',
'黑水': 'HOT',
'黑河': 'HJB',
'黔江': 'QNW',
'鼎湖东': 'UWQ',
'鼎湖山': 'NVQ',
'齐河': 'QIK',
'齐齐哈尔': 'QHX',
'齐齐哈尔南': 'QNB',
'龙丰': 'KFQ',
'龙井': 'LJL',
'龙华': 'LHP',
'龙南': 'UNG',
'龙口市': 'UKK',
'龙嘉': 'UJL',
'龙塘坝': 'LBM',
'龙山镇': 'LAS',
'龙岩': 'LYS',
'龙川': 'LUQ',
'龙市': 'LAG',
'龙桥': 'LQU',
'龙江': 'LJX',
'龙沟': 'LGJ',
'龙泉寺': 'UQJ',
'龙洞堡': 'FVW',
'龙游': 'LMH',
'龙爪沟': 'LZT',
'龙里': 'LLW',
'龙里北': 'KFW',
'龙镇': 'LZA',
'龙骨甸': 'LGM'}
具体的tickets.py的代码如下:
# -*- coding:utf-8 -*-
"""命令行火车票查看器
Usage:
tickets [-gdtkz] <from> <to> <date>
Options:
-h,--help 显示帮助菜单
-g 高铁
-d 动车
-t 特快
-k 快速
-z 直达
Example:
tickets 太原 北京 2019-06-12
tickets -dg 天津 南昌 2019-06-10
"""
from docopt import docopt
from stations import stations
import requests
from prettytable import PrettyTable
from colorama import init, Fore
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
init()
def cli():
arguments = docopt(__doc__)
from_station = stations.get(arguments['<from>'])
to_staion = stations.get(arguments['<to>'])
date = arguments['<date>']
print("from_station:" + from_station)
print("to_staion:" + to_staion)
print("date:" + date)
url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(
date, from_station, to_staion)
print("url:" + url)
# 添加verify=False参数不验证证书
response = requests.get(url, verify=False)
print(str(response.status_code))
print(response.json())
print(response.json()['data']['result'])
print(arguments.items())
# dict_items([('-g', True), ('-d', True), ('-t', False), ('-k', False), ('-z', False), ('<from>', '合肥'), ('<to>', '巢湖'), ('<date>', '2019-05-25')])
print(type(arguments.items()))
# <class 'dict_items'>
print([key for key, value in arguments.items() if value is True])
# ['-g', '-d']
print(type([key for key, value in arguments.items() if value is True]))
# <class 'list'>
options = ''.join([key for key, value in arguments.items() if value is True])
print("===options:" + options)
print(type(''.join([key for key, value in arguments.items() if value is True])))
# ===options:-g-d
# <class 'str'>
TransCollection(response.json()['data']['result'], options, response.json()['data']['map']).pretty_print()
class TransCollection:
print("111")
header = '车次 车站 时间 历时 一等座 二等座 软卧 硬卧 硬座 无座'.split()
def __init__(self, available_trains, options, mapmap):
self.availavle_trains = available_trains
self.options = options
self.mapmap = mapmap
def _get_duration(self, train_data):
duration = train_data[10].replace(':', '小时') + '分'
if duration.startswith('00'):
return duration[4:]
if duration.startswith('0'):
return duration[1:]
return duration
@property
def trains(self):
for train in self.availavle_trains:
train_data = str(train).split(sep='|')
train_number = train_data[3][0:1].lower() # 开头转换成小写
if train_number in self.options:
print("==========train_number:" + train_number)
startStation = train_data[6]
endStation = train_data[7]
startStation_CN = self.mapmap.get(startStation)
endStation_CN = self.mapmap.get(endStation)
print("==========startStation:" + startStation + ",startStation_CN:" + startStation_CN)
print("==========endStation:" + endStation + ",endStation_CN:" + endStation_CN)
train = [
train_data[3], # 车次
'\n'.join([Fore.GREEN + startStation_CN + Fore.RESET, # 车站
Fore.RED + endStation_CN + Fore.RESET]),
'\n'.join([Fore.GREEN + train_data[8] + Fore.RESET, # 车站
Fore.RED + train_data[9] + Fore.RESET]),
self._get_duration(train_data), # 历时
train_data[31], # 一等座
train_data[30], # 二等座
train_data[23], # 软卧
train_data[28], # 硬卧
train_data[29], # 硬座
train_data[26], # 无座
]
yield train
def pretty_print(self):
pt = PrettyTable()
pt._set_field_names(self.header)
for train in self.trains:
pt.add_row(train)
print(pt)
if __name__ == '__main__':
cli()
查询太原-北京2019-06-03如下: