一、实验简介

本课程使用 Python3 抓取 12306 网站信息提供一个命令行的火车票查询工具。通过该项目的实现,可以熟悉 Python3 基础及网络编程,

以及 docopt,requests,prettytable 等库的使用。 课程教学视频:https://www.bilibili.com/video/av12380578/

1.1 知识点

Python 基础知识的综合运用

docopt、requests、colorama 及 prettytable 库的使用

setuptools 的使用

1.2 效果截图

二、接口设计

一个应用写出来最终是要给人使用的,哪怕只是给你自己使用。

所以,首先应该想想你希望怎么使用它?让我们先给这个小应用起个名字吧,既然涉及查询票务信息,那就叫它 tickets 好了。

我们希望用户只要输入出发站,到达站以及日期就能获得想要的信息,比如要查看10月10号上海-北京的火车余票, 我们只需输入:

$ python3 tickets.py 上海 北京 2016-10-10

注意:上面的日期(包括后面的)是笔者写文章时确定的日期,当你在做这个项目的时候可能要根据当前时间做适当调整。

转化为程序语言就是:

$ python tickets.py from to date

另外,火车有各种类型,高铁、动车、特快、快速和直达,我们希望可以提供选项只查询特定的一种或几种的火车,所以,我们应该有下面这些选项:

-g 高铁

-d 动车

-t 特快

-k 快速

-z 直达

这几个选项应该能被组合使用,所以,最终我们的接口应该是这个样子的:

$ python tickets.py [-gdtkz] from to date

接口已经确定好了,剩下的就是实现它了。

三、代码实现

首先安装一下实验需要用到的库:

$ sudo pip3 install requests prettytable docopt

$ sudo pip3 install --upgrade colorama #升级环境中的 colorama

requests,使用 Python 访问 HTTP 资源的必备库。

docopt,Python3 命令行参数解析工具。

prettytable, 格式化信息打印工具,能让你像 MySQL 那样打印数据。

colorama,命令行着色工具

3.1 解析参数

Python有很多写命令行参数解析工具,如 argparse, docopt, click,这里我们选用的是 docopt 这个简单易用的工具。docopt 可以按我们在文档字符串中定义的格式来解析参数,比如我们在 tickets.py 中写下下面的内容(实验楼环境下,通过点击右下角的键盘小图标可以选择中文输入法):

# coding: utf-8

"""命令行火车票查看器

Usage:

tickets [-gdtkz]

Options:

-h,--help 显示帮助菜单

-g 高铁

-d 动车

-t 特快

-k 快速

-z 直达

Example:

tickets 北京 上海 2016-10-10

tickets -dg 成都 南京 2016-10-10

"""

from docopt import docopt

def cli():

"""command-line interface"""

arguments = docopt(__doc__)

print(arguments)

if __name__ == '__main__':

cli()

上面的程序中, docopt 会根据我们在 docstring 中的定义的格式自动解析出参数并返回一个字典,也就是 arguments, 我们打印出了这个字典的内容。下面我们运行一下这个程序, 比如查询一下10月30号从成都到南京的动车和高铁:

$ python tickets.py -dg 成都 南京 2016-10-10

我们得到下面的参数解析结果:

3.2 获取数据

参数已经解析好了,下面就是如何获取数据了,这也是最主要的部分。首先我们用实验楼环境的Firefox浏览打开 12306,进入余票查询页面,按下 F12 打开开发者工具,选中 Network 一栏,在查询框中随便查询一次,我们在调试工具观察下请求和响应:

注意到上面的请求 URL ,它是由基 URL https://kyfw.12306.cn/otn/leftTicket/queryO 加四个参数构成的,这四个参数分别代表,查询的类型(成人?学生?),日期,出发车站,到达车站:

再来看看响应:

返回的是JSON格式的数据! 我们打开返回的数据看看:

可以看到一列火车的数据用 Python 的语言说就是一个字典。

接下来问题就简单了,我们只需要利用这个接口, 构建请求URL然后解析返回的JSON数据就可以了。但是我们发现,URL里面参数 from_station 和 to_station 并不是汉字,而是一个代号,而我们想要输入的是汉字,我们要如何获取代号呢?我们打开网页源码看看有没有什么发现。

果然,这里有个关于 station 的文件,打开看看:

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.8971'

response = requests.get(url, verify=False)

stations = re.findall(u'([\u4e00-\u9fa5]+)\|([A-Z]+)', response.text)

pprint(dict(stations), indent=4)

我们运行这个脚本,它将以字典的形式返回所有车站和它的大写字母代号, 我们将结果重定向到 stations.py 中,

$ python3 parse_station.py > stations.py

我们为这个字典加名字,stations, 最终,stations.py文件是这样的:

现在,用户输入车站的中文名,我们就可以直接从这个字典中获取它的字母代码了:

一下为完整代码:

tickets.py:

"""

tickets 程序

Usage:

tickets [-gdtkz]

Options:

-h --help Show this screen.

-g 高铁

-d 动车

-t 特快

-k 快速

-z 直达

Example:

tickets -gdt beijing shanghai 2016-11-12

"""

from docopt import docopt

import stations

import requests

from colorama import Fore

from prettytable import PrettyTable

def cli():

arguments = docopt(__doc__,version = "Tickets 1.0")

from_station = stations.get_telecode(arguments.get(""))

#获取地址和字符对应表的字母 因为是字典 可以用 字典.get 获取

to_station = stations.get_telecode(arguments.get(""))

date = arguments.get("")

options = "".join([key for key,value in arguments.items() if value is True]) #.items()因为遍历的是字典所以要加这个

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_station)

r = requests.get(url,verify = False)

raw_trains = r.json()["data"]["result"]

#print(raw_trains)

#将r 转化为 json 字典

pt = PrettyTable()

pt._set_field_names("车次 车站 时间 历时 一等座 二等座 软卧 硬卧 硬座 无座".split())

for raw_train in raw_trains:

data_list = raw_train.split("|")

#print(data_list[2]) #长编号 所以2 不需要

train_no = data_list[3] #短编号 是车次

initial = train_no[0].lower() #显示的是大写之母 输入的是小写字母

if initial in options or initial in options:

from_station_code = data_list[6]

to_station_code = data_list[7]

from_station_name = ""#车站

to_station_name = "" #到达车站

start_time = data_list[8]#时间

arrive_time = data_list[9] #到达时间

time_duration = data_list[10] #历时

first_class_seat = data_list[31] or "--" #一等座

second_class_seat = data_list[30] or "--" #二等座

soft_sleep = data_list[23] or "--"#软卧

hard_sleep = data_list[28] or "--"#硬卧

hard_seat = data_list[29] or "--" #硬座

no_seat = data_list[33] or "--" #无座

pt.add_row([

train_no,

# "\n".join([Fore.GREEN + stations.get_name(from_station_code)+Fore.RESET,Fore.RED+stations.get_name(to_station_code)+Fore.RESET]),

# "\n".join([Fore.GREEN + start_time+Fore.RESET,Fore.RED+ arrive_time+Fore.RESET]),

"\n".join([stations.get_name(from_station_code),

stations.get_name(to_station_code)]),

"\n".join([start_time,arrive_time]),

time_duration,

first_class_seat,

second_class_seat,

soft_sleep,

hard_sleep,

hard_seat,

no_seat])

print(pt)

if __name__=="__main__":

cli()

parse_stations.py

import re

import requests

from pprint import pprint

#from stations import stations

def main():

url = "https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9053"

r = requests.get(url,verify = False)

pattern = u'([\u4e00-\u9fa5]+)\|([A-Z]+)'

#print(re.findall(pattern,r.text))

result = dict(re.findall(pattern,r.text))

print(result.keys())

print(result.values())

#pprint(dict(result),indent = 4) #把列表转化为字典

#indent 参数设置缩进

if __name__ == "__main__":

main()

stations.py

# -*- coding: utf-8-*-

names = ['北京北', '北京东', '北京', '北京南', '北京西', '广州南', '重庆北', '重庆', '重庆南', '重庆西', '广州东', '上海', '上海南', '上海虹桥', '上海西', '天津北', '天津', '天津南', '天津西', '长春', '长春南', '长春西', '成都东', '成都南', '成都', '长沙', '长沙南', '福州', '福州南', '贵阳', '广州', '广州西', '哈尔滨', '哈尔滨东', '哈尔滨西', '合肥', '合肥西', '呼和浩特东', '呼和浩特', '口东', '海口东', '海口', '杭州东', '杭州', '杭州南', '济南', '济南东', '济南西', '昆明', '昆明西', '拉萨', '兰州东', '兰州', '兰州西', '南昌', '南京', '南京南', '南宁', '石家庄北', '石家庄', '沈阳', '沈阳北', '沈阳东', '沈阳南', '太原北', '太原东', '太原', '武汉', '王家营西', '乌鲁木齐南', '西安北', '西安', '西安南', '西宁', '银川', '郑州', '阿尔山', '安康', '阿克苏', '阿里河', '阿拉山口', '安平', '安庆', '安顺', '鞍山', '安阳', '北安', '蚌埠', '白城', '北海', '白河', '白涧', '宝鸡', '滨江', '博克图', '百色', '白山市', '北台', '包头东', '包头', '北屯市', '本溪', '白云鄂博', '白银西', '亳州', '赤壁', '常德', '承德', '长甸', '赤峰', '茶陵', '苍南', '昌平', '崇仁', '昌图', '长汀镇', '曹县', '楚雄南', '陈相屯', '长治北', '池州', '长征', '常州', '郴州', '长治', '沧州', '崇左', '大安北', '大成', '丹东', '东方红', '东莞东', '大虎山', '敦煌', '敦化', '德惠', '东京城', '大涧', '都江堰', '大连北', '大理', '大连', '定南', '大庆', '东胜', '大石桥', '大同', '东营', '大杨树', '都匀', '邓州', '达州', '德州', '额济纳', '二连', '恩施', '福鼎', '凤凰机场', '风陵渡', '涪陵', '富拉尔基', '抚顺北', '佛山', '阜新南', '阜阳', '格尔木', '广汉', '古交', '桂林北', '古莲', '桂林', '固始', '广水', '干塘', '广元', '广州北', '赣州', '公主岭', '公主岭南', '淮安', '淮北', '鹤北', '淮滨', '河边', '潢川', '韩城', '邯郸', '横道河子', '鹤岗', '皇姑屯', '红果', '黑河', '怀化', '汉口', '葫芦岛', '海拉尔', '霍林郭勒', '海伦', '侯马', '哈密', '淮南', '桦南', '海宁西', '鹤庆', '怀柔北', '怀柔', '黄石东', '华山', '黄山', '黄石', '衡水', '衡阳', '菏泽', '贺州', '汉中', '惠州', '吉安', '集安', '江边村', '晋城', '金城江', '景德镇', '嘉峰', '加格达奇', '井冈山', '蛟河', '金华南', '金华', '九江', '吉林', '荆门', '佳木斯', '济宁', '集宁南', '酒泉', '江山', '吉首', '九台', '镜铁山', '鸡西', '绩溪县', '嘉峪关', '江油', '锦州', '金州', '蓟州', '库尔勒', '开封', '岢岚', '凯里', '喀什', '昆山南', '奎屯', '开原', '六安', '灵宝', '芦潮港', '隆昌', '陆川', '利川', '临川', '潞城', '鹿道', '娄底', '临汾', '良各庄', '临河', '漯河', '绿化', '隆化', '丽江', '临江', '龙井', '吕梁', '醴陵', '柳林南', '滦平', '六盘水', '灵丘', '旅顺', '兰溪', '陇西', '澧县', '临西', '龙岩', '耒阳', '洛阳', '连云港东', '洛阳东', '临沂', '洛阳龙门', '柳园', '凌源', '辽源', '立志', '柳州', '辽中', '麻城', '免渡河', '牡丹江', '莫尔道嘎', '明光', '满归', '漠河', '茂名', '茂名西', '密山', '马三家', '麻尾', '绵阳', '梅州', '满洲里', '宁波东', '宁波', '南岔', '南充', '南丹', '南大庙', '南芬', '讷河', '嫩江', '内江', '南平', '南通', '南阳', '碾子山', '平顶山', '盘锦', '平凉', '平凉南', '平泉', '坪石', '萍乡', '凭祥', '郫县西', '攀枝花', '蕲春', '青城山', '青岛', '清河城', '曲靖', '黔江', '前进镇', '齐齐哈尔', '七台河', '沁县', '泉州东', '泉州', '衢州', '融安', '汝箕沟', '瑞金', '日照', '双城堡', '绥芬河', '韶关东', '山海关', '绥化', '三间房', '苏家屯', '舒兰', '三明', '神木南', '三门峡', '商南', '遂宁', '四平', '商丘', '上饶', '韶山', '宿松', '汕头', '邵武', '涉县', '三亚', '亚', '邵阳', '十堰', '双鸭山', '松原', '苏州', '深圳', '宿州', '随州', '朔州', '深圳西', '塘豹', '塔尔气', '潼关', '塘沽', '塔河', '通化', '泰来', '吐鲁番', '通辽', '铁岭', '陶赖昭', '图们', '铜仁', '唐山北', '田师府', '泰山', '唐山', '天水', '通远堡', '太阳升', '泰州', '桐梓', '通州西', '五常', '武昌', '瓦房店', '威海', '芜湖', '乌海西', '吴家屯', '武隆', '乌兰浩特', '渭南', '威舍', '歪头山', '武威', '武威南', '无锡', '乌西', '乌伊岭', '武夷山', '万源', '万州', '梧州', '温州', '温州南', '西昌', '许昌', '西昌南', '香坊', '轩岗', '兴国', '宣汉', '新会', '新晃', '锡林浩特', '兴隆县', '厦门北', '厦门', '厦门高崎', '小市', '秀山', '向塘', '宣威', '新乡', '信阳', '咸阳', '襄阳', '熊岳城', '新沂', '兴义', '新余', '徐州', '延安', '宜宾', '亚布力南', '叶柏寿', '宜昌东', '永川', '盐城', '宜昌', '运城', '伊春', '榆次', '杨村', '宜春西', '伊尔施', '燕岗', '永济', '延吉', '营口', '牙克石', '阎良', '玉林', '榆林', '亚龙湾', '一面坡', '伊宁', '阳平关', '玉屏', '原平', '延庆', '阳泉曲', '玉泉', '阳泉', '营山', '玉山', '燕山', '榆树', '鹰潭', '烟台', '伊图里河', '玉田县', '义乌', '阳新', '义县', '益阳', '岳阳', '崖州', '永州', '扬州', '淄博', '镇城底', '自贡', '珠海', '珠海北', '湛江', '镇江', '张家界', '张家口', '张家口南', '周口', '哲里木', '扎兰屯', '驻马店', '肇庆', '周水子', '昭通', '中卫', '资阳', '遵义西', '枣庄', '资中', '株洲', '枣庄西', '昂昂溪', '阿城', '安达', '安德', '安定', '安多', '安广', '敖汉', '艾河', '安化', '艾家村', '鳌江', '安家', '阿金', '安靖', '阿克陶', '安口窑', '敖力布告', '安龙', '阿龙山', '安陆', '阿木尔', '阿南庄', '安庆西', '鞍山西', '安塘', '安亭北', '阿图什', '安图', '安溪', '博鳌', '北碚', '白壁关', '蚌埠南', '巴楚', '板城', '北戴河', '保定', '宝坻', '八达岭', '巴东', '柏果', '布海', '白河东', '贲红', '宝华山', '白河县', '白芨沟', '碧鸡关', '北滘', '碧江', '白鸡坡', '笔架山', '八角台', '保康', '白奎堡', '白狼', '百浪', '博乐', '宝拉格', '巴林', '宝林', '北流', '勃利', '布列开', '宝龙山', '百里峡', '八面城', '班猫箐', '八面通', '北马圈子', '北票南', '白旗', '宝泉岭', '白泉', '巴山', '白水江', '白沙坡', '白石山', '白水镇', '东', '坂田', '泊头', '北屯', '本溪湖', '博兴', '八仙筒', '白音察干', '背荫河', '北营', '巴彦高勒', '白音他拉', '鲅鱼圈', '白银市', '白音胡硕', '巴中', '霸州', '北宅', '赤壁北', '查布嘎', '长城', '长冲', '承德东', '赤峰西', '嵯岗', '柴岗', '长葛', '柴沟堡', '城固', '陈官营', '成高子', '草海', '柴河', '册亨', '草河口', '崔黄口', '巢湖', '蔡家沟', '成吉思汗', '岔江', '蔡家坡', '昌乐', '超梁沟', '慈利', '昌黎', '长岭子', '晨明', '长农', '昌平北', '常平', '长坡岭', '辰清', '蔡山', '楚山', '长寿', '磁山', '苍石', '草市', '察素齐', '长山屯', '长汀', '朝天南', '昌图西', '春湾', '磁县', '岑溪', '辰溪', '磁西', '长兴南', '磁窑', '春阳', '城阳', '创业村', '朝阳川', '朝阳地', '朝阳南', '长垣', '朝阳镇', '滁州北', '常州北', '滁州', '潮州', '常庄', '曹子里', '车转湾', '郴州西', '沧州西', '德安', '大安', '大坝', '大板', '大巴', '到保', '定边', '东边井', '德伯斯', '打柴沟', '德昌', '滴道', '大磴沟', '刀尔登', '得耳布尔', '杜尔伯特', '东方', '丹凤', '东丰', '都格', '大官屯', '大关', '东光', '东海', '大灰厂', '大红旗', '大禾塘', '东海县', '德惠西', '达家沟', '东津', '杜家', '大口屯', '东来', '德令哈', '大陆号', '带岭', '大林', '达拉特旗', '独立屯', '豆罗', '达拉特西', '大连西', '东明村', '洞庙河', '东明县', '大拟', '大平房', '大盘石', '大埔', '大堡', '大庆东', '大其拉哈', '道清', '对青山', '德清西', '大庆西', '东升', '砀山', '独山', '登沙河', '读书铺', '大石头', '东胜西', '大石寨', '东台', '定陶', '灯塔', '大田边', '东通化', '丹徒', '大屯', '东湾', '大武口', '低窝铺', '大王滩', '大湾子', '大兴沟', '大兴', '定西', '甸心', '东乡', '代县', '定襄', '东戌', '东辛庄', '丹阳', '德阳', '大雁', '当阳', '丹阳北', '大英东', '东淤地', '大营', '定远', '岱岳', '大元', '大营镇', '大营子', '大战场', '德州东', '东至', '低庄', '东镇', '道州', '东庄', '兑镇', '豆庄', '定州', '大竹园', '大杖子', '豆张庄', '峨边', '二道沟门', '二道湾', '鄂尔多斯', '二龙', '二龙山屯', '峨眉', '二密河', '二营', '鄂州', '福安', '丰城', '丰城南', '肥东', '发耳', '富海', '福海', '凤凰城', '汾河', '奉化', '富锦', '范家屯', '福利区', '福利屯', '丰乐镇', '阜南', '阜宁', '抚宁', '福清', '福泉', '丰水村', '丰顺', '繁峙', '抚顺', '福山口', '扶绥', '冯屯', '浮图峪', '富县东', '凤县', '富县', '费县', '凤阳', '汾阳', '扶余北', '分宜', '富源', '扶余', '富裕', '抚州北', '凤州', '丰镇', '范镇', '固安', '广安', '高碑店', '沟帮子', '甘草店', '谷城', '藁城', '高村', '古城镇', '广德', '贵定', '贵定南', '古东', '贵港', '官高', '葛根庙', '干沟', '甘谷', '高各庄', '甘河', '根河', '郭家店', '孤家子', '古浪', '皋兰', '高楼房', '归流河', '关林', '甘洛', '郭磊庄', '高密', '公庙子', '工农湖', '广宁寺南', '广南卫', '高平', '甘泉北', '共青城', '甘旗卡', '甘泉', '高桥镇', '灌水', '赶水', '孤山口', '果松', '高山子', '嘎什甸子', '高台', '高滩', '古田', '官厅', '官厅西', '贵溪', '涡阳', '巩义', '高邑', '巩义南', '广元南', '固原', '菇园', '公营子', '光泽', '古镇', '固镇', '虢镇', '瓜州', '高州', '盖州', '官字井', '冠豸山', '盖州西', '淮安南', '红安', '海安县', '红安西', '黄柏', '海北', '鹤壁', '会昌北', '华城', '河唇', '汉川', '海城', '合川', '黑冲滩', '黄村', '海城西', '化德', '洪洞', '霍尔果斯', '横峰', '韩府湾', '汉沽', '黄瓜园', '红光镇', '浑河', '红花沟', '黄花筒', '贺家店', '和静', '红江', '黑井', '获嘉', '河津', '涵江', '华家', '杭锦后旗', '河间西', '花家庄', '河口南', '湖口', '黄口', '呼兰', '葫芦岛北', '浩良河', '哈拉海', '鹤立', '桦林', '黄陵', '海林', '虎林', '寒岭', '和龙', '海龙', '哈拉苏', '呼鲁斯太', '火连寨', '黄梅', '韩麻营', '黄泥河', '海宁', '惠农', '和平', '花棚子', '花桥', '宏庆', '怀仁', '华容', '华山北', '黄松甸', '和什托洛盖', '红山', '汉寿', '衡山', '黑水', '惠山', '虎什哈', '红寺堡', '虎石台', '海石湾', '衡山西', '红砂岘', '黑台', '桓台', '和田', '会同', '海坨子', '黑旺', '海湾', '红星', '徽县', '红兴隆', '换新天', '红岘台', '红彦', '合阳', '海阳', '衡阳东', '华蓥', '汉阴', '黄羊滩', '汉源', '河源', '花园', '湟源', '黄羊镇', '湖州', '化州', '黄州', '霍州', '惠州西', '巨宝', '靖边', '金宝屯', '晋城北', '金昌', '鄄城', '交城', '建昌', '峻德', '井店', '鸡东', '江都', '鸡冠山', '金沟屯', '静海', '金河', '锦河', '精河', '精河南', '江华', '建湖', '纪家沟', '晋江', '锦界', '姜家', '江津', '金坑', '芨岭', '金马村', '江门东', '角美', '莒南', '井南', '建瓯', '经棚', '江桥', '九三', '金山北', '嘉善', '京山', '建始', '稷山', '吉舒', '建设', '甲山', '建三江', '嘉善南', '金山屯', '江所田', '景泰', '九台南', '吉文', '进贤', '莒县', '嘉祥', '介休', '嘉兴', '井陉', '嘉兴南', '夹心子', '姜堰', '揭阳', '建阳', '简阳', '巨野', '江永', '缙云', '靖远', '江源', '济源', '靖远西', '胶州北', '焦作东', '金寨', '靖州', '荆州', '胶州', '晋州', '锦州南', '焦作', '旧庄窝', '金杖子', '开安', '库车', '康城', '库都尔', '宽甸', '克东', '昆都仑召', '开江', '康金井', '喀喇其', '开鲁', '克拉玛依', '口前', '昆山', '奎山', '克山', '开通', '康熙岭', '昆阳', '克一河', '开原西', '康庄', '来宾', '老边', '灵宝西', '龙川', '乐昌', '黎城', '聊城', '蓝村', '两当', '林东', '乐都', '梁底下', '六道河子', '鲁番', '廊坊', '落垡', '廊坊北', '老府', '兰岗', '龙骨甸', '芦沟', '龙沟', '拉古', '临海', '林海', '拉哈', '凌海', '柳河', '六合', '龙华', '滦河沿', '六合镇', '亮甲店', '刘家店', '刘家河', '连江', '庐江', '李家', '罗江', '廉江', '两家', '龙江', '龙嘉', '莲江口', '蔺家楼', '李家坪', '兰考', '林口', '路口铺', '老莱', '拉林', '陆良', '龙里', '临澧', '兰棱', '零陵', '卢龙', '喇嘛甸', '里木店', '洛门', '龙南', '梁平', '罗平', '落坡岭', '六盘山', '乐平市', '临清', '龙泉寺', '乐山北', '乐善村', '冷水江东', '连山关', '流水沟', '丽水', '陵水', '罗山', '鲁山', '梁山', '灵石', '露水河', '庐山', '林盛堡', '柳树屯', '龙山镇', '梨树镇', '李石寨', '黎塘', '轮台', '芦台', '龙塘坝', '濑湍', '骆驼巷', '李旺', '莱芜东', '狼尾山', '灵武', '莱芜西', '朗乡', '陇县', '临湘', '芦溪', '莱西', '林西', '滦县', '略阳', '莱阳', '辽阳', '临沂北', '凌源东', '连云港', '临颍', '老营', '龙游', '罗源', '林源', '涟源', '涞源', '耒阳西', '临泽', '龙爪沟', '雷州', '六枝', '鹿寨', '来舟', '龙镇', '拉鲊', '兰州新区', '马鞍山', '毛坝', '毛坝关', '麻城北', '渑池', '明城', '庙城', '渑池南', '茅草坪', '猛洞河', '磨刀石', '弥渡', '帽儿山', '明港', '梅河口', '马皇', '孟家岗', '美兰', '汨罗东', '马莲河', '茅岭', '庙岭', '茂林', '穆棱', '马林', '马龙', '木里图', '汨罗', '玛纳斯湖', '冕宁', '沐滂', '马桥河', '闽清', '民权', '明水河', '麻山', '眉山', '漫水湾', '茂舍祖', '米沙子', '美溪', '勉县', '麻阳', '密云北', '米易', '麦园', '墨玉', '庙庄', '米脂', '明珠', '宁安', '农安', '南博山', '南仇', '南城司', '宁村', '宁德', '南观村', '南宫东', '南关岭', '宁国', '宁海', '南华北', '南河川', '泥河子', '宁家', '南靖', '牛家', '能家', '南口', '南口前', '南朗', '乃林', '尼勒克', '那罗', '宁陵县', '奈曼', '宁明', '南木', '南平南', '那铺', '南桥', '那曲', '暖泉', '南台', '南头', '宁武', '南湾子', '南翔北', '宁乡', '内乡', '牛心台', '南峪', '娘子关', '南召', '南杂木', '蓬安', '平安', '平安驿', '磐安镇', '平安镇', '蒲城东', '蒲城', '裴德', '偏店', '平顶山西', '坡底下', '瓢儿屯', '平房', '平岗', '平关', '盘关', '平果', '徘徊北', '平河口', '平湖', '盘锦北', '潘家店', '皮口南', '普兰店', '偏岭', '平山', '彭山', '皮山', '磐石', '平社', '彭水', '平台', '平田', '莆田', '葡萄菁', '普湾', '平旺', '平型关', '普雄', '郫县', '平洋', '彭阳', '平遥', '平邑', '平原堡', '平原', '平峪', '彭泽', '邳州', '平庄', '泡子', '平庄南', '乾安', '庆安', '迁安', '祁东北', '七甸', '曲阜东', '庆丰', '奇峰塔', '曲阜', '琼海', '秦皇岛', '千河', '清河', '清河门', '清华园', '全椒', '渠旧', '潜江', '秦家', '綦江', '祁家堡', '清涧县', '秦家庄', '七里河', '秦岭', '渠黎', '青龙', '青龙山', '祁门', '前磨头', '青山', '确山', '前山', '清水', '戚墅堰', '青田', '桥头', '青铜峡', '前卫', '前苇塘', '渠县', '祁县', '青县', '桥西', '清徐', '旗下营', '千阳', '沁阳', '泉阳', '祁阳北', '七营', '庆阳山', '清远', '清原', '钦州东', '钦州', '青州市', '瑞安', '荣昌', '瑞昌', '如皋', '容桂', '任丘', '乳山', '融水', '热水', '容县', '饶阳', '汝阳', '绕阳河', '汝州', '石坝', '上板城', '施秉', '上板城南', '世博园', '双城北', '舒城', '商城', '莎车', '顺昌', '神池', '沙城', '石城', '山城镇', '山丹', '顺德', '绥德', '水洞', '商都', '十渡', '四道湾', '顺德学院', '绅坊', '双丰', '四方台', '水富', '三关口', '桑根达来', '韶关', '上高镇', '上杭', '沙海', '蜀河', '松河', '沙河', '沙河口', '赛汗塔拉', '沙河市', '沙后所', '山河屯', '三河县', '四合永', '三汇镇', '双河镇', '石河子', '三合庄', '三家店', '水家湖', '沈家河', '松江河', '尚家', '孙家', '沈家', '双吉', '松江', '三江口', '司家岭', '松江南', '石景山南', '邵家堂', '三江县', '三家寨', '十家子', '松江镇', '施家嘴', '深井子', '什里店', '疏勒', '疏勒河', '舍力虎', '石磷', '石林', '双辽', '绥棱', '石岭', '石林南', '石龙', '萨拉齐', '索伦', '商洛', '沙岭子', '石门县北', '三门峡南', '三门县', '石门县', '三门峡西', '肃宁', '宋', '双牌', '沙坪坝', '四平东', '遂平', '沙坡头', '沙桥', '商丘南', '水泉', '石泉县', '石桥子', '石人城', '石人', '山市', '神树', '鄯善', '三水', '泗水', '石山', '松树', '首山', '三十家', '三十里堡', '松树镇', '松桃', '索图罕', '三堂集', '石头', '神头', '沙沱', '上万', '孙吴', '沙湾县', '歙县', '遂溪', '沙县', '绍兴', '石岘', '上西铺', '石峡子', '沭阳', '绥阳', '寿阳', '水洋', '三阳川', '上腰墩', '三营', '顺义', '三义井', '三源浦', '上虞', '三原', '上园', '水源', '桑园子', '绥中北', '苏州北', '宿州东', '深圳东', '深州', '孙镇', '绥中', '尚志', '师庄', '松滋', '师宗', '苏州园区', '苏州新区', '泰安', '台安', '通安驿', '桐柏', '通北', '桐城', '汤池', '郯城', '铁厂', '桃村', '通道', '田东', '天岗', '土贵乌拉', '通沟', '太谷', '塔哈', '棠海', '唐河', '泰和', '太湖', '团结', '谭家井', '陶家屯', '唐家湾', '统军庄', '吐列毛杜', '图里河', '铜陵', '田林', '亭亮', '铁力', '铁岭西', '图们北', '天门', '天门南', '太姥山', '土牧尔台', '土门子', '洮南', '潼南', '太平川', '太平镇', '图强', '台前', '天桥岭', '土桥子', '汤山城', '桃山', '塔石嘴', '通途', '汤旺河', '同心', '土溪', '桐乡', '田阳', '天义', '汤阴', '驼腰岭', '太阳山', '汤原', '塔崖驿', '滕州东', '台州', '天祝', '滕州', '天镇', '桐子林', '天柱山', '文安', '武安', '王安镇', '吴堡', '旺苍', '五叉沟', '文昌', '温春', '五大连池', '文登', '五道沟', '五道河', '文地', '卫东', '武当山', '望都', '乌尔旗汗', '潍坊', '万发屯', '王府', '瓦房店西', '王岗', '武功', '湾沟', '吴官田', '乌海', '苇河', '卫辉', '吴家川', '五家', '威箐', '午汲', '渭津', '王家湾', '倭肯', '五棵树', '五龙背', '乌兰哈达', '万乐', '瓦拉干', '温岭', '五莲', '乌拉特前旗', '乌拉山', '卧里屯', '渭南北', '乌奴耳', '万宁', '万年', '渭南南', '渭南镇', '沃皮', '吴桥', '汪清', '武清', '武山', '文水', '魏善庄', '王瞳', '五台山', '王团庄', '五五', '无锡东', '卫星', '闻喜', '武乡', '无锡新区', '武穴', '吴圩', '王杨', '武义', '五营', '瓦窑田', '五原', '苇子沟', '韦庄', '五寨', '王兆屯', '微子镇', '魏杖子', '新安', '兴安', '新安县', '新保安', '下板城', '西八里', '宣城', '兴城', '小村', '新绰源', '下城子', '新城子', '喜德', '小得江', '西大庙', '小董', '小东', '信丰', '襄汾', '息烽', '新干', '孝感', '西固城', '西固', '夏官营', '西岗子', '襄河', '新和', '宣和', '斜河涧', '新华屯', '新华', '新化', '宣化', '兴和西', '小河沿', '下花园', '小河镇', '徐家', '峡江', '新绛', '辛集', '新江', '西街口', '许家屯', '许家台', '谢家镇', '兴凯', '小榄', '香兰', '兴隆店', '新乐', '新林', '小岭', '新李', '西林', '西柳', '仙林', '新立屯', '兴隆镇', '新立镇', '新民', '西麻山', '下马塘', '孝南', '咸宁北', '兴宁', '咸宁', '犀浦东', '西平', '兴平', '新坪田', '霞浦', '溆浦', '犀浦', '新青', '新邱', '兴泉堡', '仙人桥', '小寺沟', '杏树', '浠水', '下社', '徐水', '夏石', '小哨', '新松浦', '杏树屯', '许三湾', '湘潭', '邢台', '仙桃西', '下台子', '徐闻', '新窝铺', '修武', '新县', '息县', '西乡', '湘乡', '西峡', '孝西', '小新街', '新兴县', '西小召', '小西庄', '向阳', '旬阳', '旬阳北', '襄阳东', '兴业', '小雨谷', '信宜', '小月旧', '小扬气', '襄垣', '夏邑县', '祥云西', '新友谊', '新阳镇', '徐州东', '新帐房', '悬钟', '新肇', '忻州', '汐子', '西哲里木', '新杖子', '姚安', '依安', '永安', '永安乡', '亚布力', '元宝山', '羊草', '秧草地', '阳澄湖', '迎春', '叶城', '盐池', '砚川', '阳春', '宜城', '应城', '禹城', '晏城', '阳城', '阳岔', '郓城', '雁翅', '云彩岭', '虞城县', '营城子', '英德', '永登', '尹地', '永定', '雁荡山', '于都', '园墩', '英德西', '永丰营', '杨岗', '阳高', '阳谷', '友好', '余杭', '沿河城', '岩会', '羊臼河', '永嘉', '营街', '盐津', '余江', '燕郊', '姚家', '岳家井', '一间堡', '英吉沙', '云居寺', '燕家庄', '永康', '营口东', '银浪', '永郎', '宜良北', '永乐店', '伊拉哈', '伊林', '杨陵', '彝良', '杨林', '余粮堡', '杨柳青', '月亮田', '义马', '阳明堡', '玉门', '云梦', '元谋', '一面山', '沂南', '宜耐', '伊宁东', '营盘水', '羊堡', '阳泉北', '乐清', '焉耆', '源迁', '姚千户屯', '阳曲', '榆树沟', '月山', '玉石', '玉舍', '偃师', '沂水', '榆社', '颍上', '窑上', '元氏', '杨树岭', '野三坡', '榆树屯', '榆树台', '鹰手营子', '源潭', '牙屯堡', '烟筒山', '烟筒屯', '羊尾哨', '越西', '攸县', '永修', '玉溪西', '弋阳', '余姚', '酉阳', '岳阳东', '阳邑', '鸭园', '鸳鸯镇', '燕子砭', '仪征', '宜州', '兖州', '迤资', '羊者窝', '杨杖子', '镇安', '治安', '招柏', '张百湾', '中川机场', '枝城', '子长', '诸城', '邹城', '赵城', '章党', '正定', '肇东', '照福铺', '章古台', '赵光', '中和', '中华门', '枝江北', '钟家村', '朱家沟', '紫荆关', '周家', '诸暨', '镇江南', '周家屯', '褚家湾', '湛江西', '朱家窑', '曾家坪子', '张兰', '镇赉', '枣林', '扎鲁特', '扎赉诺尔西', '樟木头', '中牟', '中宁东', '中宁', '中宁南', '镇平', '漳平', '泽普', '枣强', '张桥', '章丘', '朱日和', '泽润里', '中山北', '樟树东', '珠斯花', '中山', '柞水', '钟山', '樟树', '珠窝', '张维屯', '彰武', '棕溪', '钟祥', '资溪', '镇西', '张辛', '正镶白旗', '紫阳', '枣阳', '竹园坝', '张掖', '镇远', '漳州东', '漳州', '壮志', '子洲', '中寨', '涿州', '咋子', '卓资山', '株洲西', '郑州西', '阿巴嘎旗', '阿尔山北', '阿勒泰', '安仁', '安顺西', '安图西', '安阳东', '博白', '八步', '栟茶', '保定东', '八方山', '白沟', '滨海', '滨海北', '宝鸡南', '北井子', '白马井', '宝清', '璧山', '白沙铺', '白水县', '板塘', '本溪新城', '彬县', '宾阳', '白洋淀', '百宜', '白音华南', '巴中东', '滨州', '霸州西', '澄城', '城固北', '查干湖', '巢湖东', '从江', '茶卡', '长临河', '茶陵南', '常平东', '常平南', '长庆桥', '长寿北', '长寿湖', '常山', '潮汕', '长沙西', '朝天', '长汀南', '长武', '长兴', '苍溪', '长阳', '潮阳', '城子坦', '东安东', '德保', '都昌', '东岔', '东城南', '东戴河', '丹东西', '东二道河', '大丰', '大方南', '东港北', '大孤山', '东莞', '鼎湖东', '鼎湖山', '道滘', '洞井', '垫江', '大苴', '大荔', '大朗镇', '大青沟', '德清', '东胜东', '砀山南', '大石头南', '当涂东', '大通西', '大旺', '定西北', '德兴东', '德兴', '丹霞山', '大冶北', '都匀东', '东营南', '大余', '定州东', '端州', '大足南', '峨眉山', '阿房宫', '鄂州东', '防城港北', '凤城东', '富川', '繁昌西', '丰都', '涪陵北', '枫林', '富宁', '佛坪', '法启', '芙蓉南', '复盛', '抚松', '佛山西', '福山镇', '福田', '富源北', '抚远', '抚州东', '抚州', '高安', '广安南', '贵安', '高碑店东', '恭城', '藁城南', '贵定北', '葛店南', '贵定县', '广汉北', '高花', '革居', '关岭', '桂林西', '光明城', '广宁', '广宁寺', '广南县', '桂平', '弓棚子', '赶水东', '光山', '谷山', '观沙岭', '古田北', '广通北', '高台南', '古田会址', '贵阳北', '贵阳东', '高邑西', '惠安', '淮北北', '鹤壁东', '寒葱沟', '霍城', '珲春', '邯郸东', '惠东', '哈达铺', '海东西', '洪洞西', '哈尔滨北', '合肥北城', '合肥南', '黄冈', '黄冈东', '横沟桥东', '黄冈西', '洪河', '怀化南', '黄河景区', '花湖', '惠环', '后湖', '怀集', '河口北', '黄流', '黄陵南', '鲘门', '虎门', '侯马西', '衡南', '淮南东', '合浦', '霍邱', '怀仁东', '华容东', '华容南', '黄石北', '黄山北', '衡水北', '贺胜桥东', '和硕', '花山南', '荷塘', '黄土店', '合阳北', '海阳北', '槐荫', '鄠邑', '花园口', '霍州东', '惠州南', '建安', '泾川', '景德镇北', '旌德', '尖峰', '近海', '蛟河西', '军粮城北', '将乐', '贾鲁河', '九郎山', '即墨北', '剑门关', '建宁县北', '江宁', '江宁西', '建瓯西', '酒泉南', '句容西', '建水', '尖山', '界首市', '绩溪北', '介休东', '泾县', '靖西', '进贤南', '江油北', '嘉峪关南', '简阳南', '金银潭', '靖宇', '金月湾', '缙云西', '晋中', '景州', '开封北', '开福寺', '开化', '凯里南', '库伦', '昆明南', '葵潭', '开阳', '隆安东', '来宾北', '灵璧', '寮步', '绿博园', '隆昌北', '乐昌东', '临城', '罗城', '陵城', '老城镇', '龙洞堡', '乐都南', '娄底南', '乐东', '离堆公园', '陆丰', '龙丰', '禄丰南', '临汾西', '临高南', '麓谷', '滦河', '珞璜南', '漯河西', '罗江东', '柳江', '利津南', '兰考南', '龙口市', '兰陵北', '龙里北', '沥林北', '醴陵东', '陇南', '梁平南', '礼泉', '灵石东', '乐山', '龙市', '溧水', '娄山关南', '洛湾三江', '莱西北', '溧阳', '临邑', '柳园南', '鹿寨北', '阆中', '临泽南', '马鞍山东', '毛陈', '明港东', '民和南', '闵集', '马兰', '民乐', '弥勒', '玛纳斯', '牟平', '闽清北', '民权北', '眉山东', '庙山', '岷县', '门源', '暮云', '蒙自北', '孟庄', '蒙自', '南部', '南曹', '南充北', '南城', '南昌西', '宁东南', '宁东', '南芬北', '南丰', '南湖东', '内江北', '南江', '南江口', '南陵', '尼木', '南宁东', '南宁西', '南平北', '宁强南', '南雄', '纳雍', '南阳寨', '普安', '普安县', '屏边', '平坝南', '平昌', '普定', '平度', '皮口', '盘龙城', '蓬莱市', '普宁', '平南南', '彭山北', '盘山', '坪上', '萍乡北', '鄱阳', '濮阳', '平遥古城', '平原东', '普者黑', '盘州', '彭州', '秦安', '青白江东', '青川', '青岛北', '祁东', '青堆', '前锋', '曲靖北', '綦江东', '曲江', '青莲', '齐齐哈尔南', '清水北', '青神', '岐山', '庆盛', '清水县', '曲水县', '祁县东', '乾县', '旗下营南', '祁阳', '全州南', '棋子湾', '仁布', '荣昌北', '荣成', '瑞昌西', '如东', '榕江', '日喀则', '饶平', '宋城路', '三道湖', '邵东', '三都县', '胜芳', '双峰北', '商河', '泗洪', '四会', '石家庄东', '三江南', '三井子', '双流机场', '石林西', '沙岭子西', '双流西', '三明北', '嵩明', '树木岭', '神木', '苏尼特左旗', '山坡东', '石桥', '沈丘', '鄯善北', '狮山北', '三水北', '松山湖北', '狮山', '三水南', '韶山南', '三穗', '石梯', '汕尾', '歙县北', '绍兴北', '绍兴东', '泗县', '始兴', '泗阳', '双阳', '邵阳北', '松原北', '山阴', '深圳北', '神州', '深圳坪山', '石嘴山', '石柱县', '台安南', '桃村北', '田东北', '土地堂东', '太谷西', '吐哈', '通海', '太和北', '天河机场', '天河街', '通化县', '同江', '铜陵北', '吐鲁番北', '泰宁', '铜仁南', '天水南', '通渭', '田心东', '汤逊湖', '藤县', '太原南', '通远堡西', '桐梓北', '桐梓东', '通州', '文登东', '五府山', '威虎岭北', '威海北', '乌兰察布', '五龙背东', '乌龙泉南', '乌鲁木齐', '五女山', '武胜', '五通', '无为', '瓦屋山', '闻喜西', '武义北', '武夷山北', '武夷山东', '婺源', '渭源', '万州北', '武陟', '梧州南', '兴安北', '许昌东', '项城', '新都东', '西丰', '先锋', '湘府路', '襄汾西', '孝感北', '孝感东', '西湖东', '新化南', '新晃西', '新津', '小金口', '辛集南', '新津南', '咸宁东', '咸宁南', '溆浦南', '西平西', '湘潭北', '邢台东', '西乌旗', '修武西', '修文县', '萧县北', '新乡东', '新余北', '西阳村', '信阳东', '咸阳秦都', '仙游', '新郑机场', '香樟路', '迎宾路', '永城北', '运城北', '永川东', '禹城东', '宜春', '岳池', '云东海', '姚渡', '云浮东', '永福南', '雨格', '洋河', '永济北', '弋江', '于家堡', '延吉西', '永康南', '运粮河', '炎陵', '杨陵南', '伊敏', '郁南', '银瓶', '永寿', '阳朔', '云山', '玉山南', '永泰', '银滩', '鹰潭北', '烟台南', '伊通', '烟台西', '尤溪', '云霄', '宜兴', '玉溪', '阳信', '应县', '攸县南', '洋县西', '余姚北', '榆中', '诏安', '正定机场', '纸坊东', '准格尔', '庄河北', '昭化', '织金北', '张家川', '芷江', '织金', '仲恺', '曾口', '左岭', '樟木头东', '驻马店西', '漳浦', '肇庆东', '庄桥', '昭山', '钟山西', '漳县', '资阳北', '遵义', '遵义南', '张掖西', '资中北', '涿州东', '枣庄东', '卓资东', '郑州东', '株洲南']

telecodes = ['VAP', 'BOP', 'BJP', 'VNP', 'BXP', 'IZQ', 'CUW', 'CQW', 'CRW', 'CXW', 'GGQ', 'SHH', 'SNH', 'AOH', 'SXH', 'TBP', 'TJP', 'TIP', 'TXP', 'CCT', 'CET', 'CRT', 'ICW', 'CNW', 'CDW', 'CSQ', 'CWQ', 'FZS', 'FYS', 'GIW', 'GZQ', 'GXQ', 'HBB', 'VBB', 'VAB', 'HFH', 'HTH', 'NDC', 'HHC', 'KEQ', 'HMQ', 'VUQ', 'HGH', 'HZH', 'XHH', 'JNK', 'JAK', 'JGK', 'KMM', 'KXM', 'LSO', 'LVJ', 'LZJ', 'LAJ', 'NCG', 'NJH', 'NKH', 'NNZ', 'VVP', 'SJP', 'SYT', 'SBT', 'SDT', 'SOT', 'TBV', 'TDV', 'TYV', 'WHN', 'KNM', 'WMR', 'EAY', 'XAY', 'CAY', 'XNO', 'YIJ', 'ZZF', 'ART', 'AKY', 'ASR', 'AHX', 'AKR', 'APT', 'AQH', 'ASW', 'AST', 'AYF', 'BAB', 'BBH', 'BCT', 'BHZ', 'BEL', 'BAP', 'BJY', 'BJB', 'BKX', 'BIZ', 'HJL', 'BTT', 'BDC', 'BTC', 'BXR', 'BXT', 'BEC', 'BXJ', 'BZH', 'CBN', 'VGQ', 'CDP', 'CDT', 'CFD', 'CDG', 'CEH', 'CPP', 'CRG', 'CTT', 'CDB', 'CXK', 'COM', 'CXT', 'CBF', 'IYH', 'CZJ', 'CZH', 'CZQ', 'CZF', 'COP', 'CZZ', 'RNT', 'DCT', 'DUT', 'DFB', 'DMQ', 'DHD', 'DHJ', 'DHL', 'DHT', 'DJB', 'DFP', 'DDW', 'DFT', 'DKM', 'DLT', 'DNG', 'DZX', 'DOC', 'DQT', 'DTV', 'DPK', 'DUX', 'RYW', 'DOF', 'RXW', 'DZP', 'EJC', 'RLC', 'ESN', 'FES', 'FJQ', 'FLV', 'FLW', 'FRX', 'FET', 'FSQ', 'FXD', 'FYH', 'GRO', 'GHW', 'GJV', 'GBZ', 'GRX', 'GLZ', 'GXN', 'GSN', 'GNJ', 'GYW', 'GBQ', 'GZG', 'GLT', 'GBT', 'AUH', 'HRH', 'HMB', 'HVN', 'HBV', 'KCN', 'HCY', 'HDP', 'HDB', 'HGB', 'HTT', 'HEM', 'HJB', 'HHQ', 'HKN', 'HLD', 'HRX', 'HWD', 'HLB', 'HMV', 'HMR', 'HAH', 'HNB', 'EUH', 'HQM', 'HBP', 'HRP', 'OSN', 'HSY', 'HKH', 'HSN', 'HSP', 'HYQ', 'HIK', 'HXZ', 'HOY', 'HCQ', 'VAG', 'JAL', 'JBG', 'JCF', 'JJZ', 'JCG', 'JFF', 'JGX', 'JGG', 'JHL', 'RNH', 'JBH', 'JJG', 'JLL', 'JMN', 'JMB', 'JIK', 'JAC', 'JQJ', 'JUH', 'JIQ', 'JTL', 'JVJ', 'JXB', 'JRH', 'JGJ', 'JFW', 'JZD', 'JZT', 'JKP', 'KLR', 'KFF', 'KLV', 'KLW', 'KSR', 'KNH', 'KTR', 'KYT', 'UAH', 'LBF', 'UCH', 'LCW', 'LKZ', 'LCN', 'LCG', 'UTP', 'LDL', 'LDQ', 'LFV', 'LGP', 'LHC', 'LON', 'LWJ', 'UHP', 'LHM', 'LQL', 'LJL', 'LHV', 'LLG', 'LKV', 'UPP', 'UMW', 'LVV', 'LST', 'LWH', 'LXJ', 'LEQ', 'UEP', 'LYS', 'LYQ', 'LYF', 'UKH', 'LDF', 'LVK', 'LLF', 'DHR', 'LYD', 'LYL', 'LZX', 'LZZ', 'LZD', 'MCN', 'MDX', 'MDB', 'MRX', 'MGH', 'MHX', 'MVX', 'MDQ', 'MMZ', 'MSB', 'MJT', 'VAW', 'MYW', 'MOQ', 'MLX', 'NVH', 'NGH', 'NCB', 'NCW', 'NDZ', 'NMP', 'NFT', 'NHX', 'NGX', 'NJW', 'NPS', 'NUH', 'NFF', 'NZX', 'PEN', 'PVD', 'PIJ', 'POJ', 'PQP', 'PSQ', 'PXG', 'PXZ', 'PCW', 'PRW', 'QRN', 'QSW', 'QDK', 'QYP', 'QJM', 'QNW', 'QEB', 'QHX', 'QTB', 'QVV', 'QRS', 'QYS', 'QEH', 'RAZ', 'RQJ', 'RJG', 'RZK', 'SCB', 'SFB', 'SGQ', 'SHD', 'SHB', 'SFX', 'SXT', 'SLL', 'SMS', 'OMY', 'SMF', 'ONY', 'NIW', 'SPT', 'SQF', 'SRG', 'SSQ', 'OAH', 'OTQ', 'SWS', 'OEP', 'SEQ', 'JUQ', 'SYQ', 'SNN', 'SSB', 'VYT', 'SZH', 'SZQ', 'OXH', 'SZN', 'SUV', 'OSQ', 'TBQ', 'TVX', 'TGY', 'TGP', 'TXX', 'THL', 'TLX', 'TFR', 'TLD', 'TLT', 'TPT', 'TML', 'RDQ', 'FUP', 'TFT', 'TAK', 'TSP', 'TSJ', 'TYT', 'TQT', 'UTH', 'TZW', 'TAP', 'WCB', 'WCN', 'WDT', 'WKK', 'WHH', 'WXC', 'WJT', 'WLW', 'WWT', 'WNY', 'WSM', 'WIT', 'WUJ', 'WWJ', 'WXH', 'WXR', 'WPB', 'WAS', 'WYY', 'WYW', 'WZZ', 'RZH', 'VRH', 'ECW', 'XCF', 'ENW', 'XFB', 'XGV', 'EUG', 'XHY', 'EFQ', 'XLQ', 'XTC', 'EXP', 'XKS', 'XMS', 'XBS', 'XST', 'ETW', 'XTG', 'XWM', 'XXF', 'XUN', 'XYY', 'XFN', 'XYT', 'VIH', 'XRZ', 'XUG', 'XCH', 'YWY', 'YBW', 'YWB', 'YBD', 'HAN', 'YCW', 'AFH', 'YCN', 'YNV', 'YCB', 'YCV', 'YBP', 'YCG', 'YET', 'YGW', 'YIV', 'YJL', 'YKT', 'YKX', 'YNY', 'YLZ', 'ALY', 'TWQ', 'YPB', 'YMR', 'YAY', 'YZW', 'YPV', 'YNP', 'YYV', 'YQB', 'AQP', 'NUW', 'YNG', 'AOP', 'YRT', 'YTG', 'YAK', 'YEX', 'ATP', 'YWH', 'YON', 'YXD', 'AEQ', 'YYQ', 'YUQ', 'AOQ', 'YLH', 'ZBK', 'ZDV', 'ZGW', 'ZHQ', 'ZIQ', 'ZJZ', 'ZJH', 'DIQ', 'ZKP', 'ZMP', 'ZKN', 'ZLC', 'ZTX', 'ZDN', 'ZVQ', 'ZIT', 'ZDW', 'ZWJ', 'ZYW', 'ZIW', 'ZEK', 'ZZW', 'ZZQ', 'ZFK', 'AAX', 'ACB', 'ADX', 'ARW', 'ADP', 'ADO', 'AGT', 'YED', 'AHP', 'PKQ', 'AJJ', 'ARH', 'AJB', 'AJD', 'PYW', 'AER', 'AYY', 'ALD', 'AUZ', 'ASX', 'ALN', 'JTX', 'AZM', 'APH', 'AXT', 'ATV', 'ASH', 'ATR', 'ATL', 'AXS', 'BWQ', 'BPW', 'BGV', 'BMH', 'BCR', 'BUP', 'BEP', 'BDP', 'BPP', 'ILP', 'BNN', 'BGM', 'BUT', 'BIY', 'BVC', 'BWH', 'BEY', 'BJJ', 'BJM', 'IBQ', 'BLQ', 'BBM', 'BSB', 'BTD', 'BKD', 'BKB', 'BAT', 'BRZ', 'BOR', 'BQC', 'BLX', 'BNB', 'BOZ', 'BLB', 'BLR', 'BND', 'AAP', 'BMD', 'BNM', 'BMB', 'BRP', 'RPD', 'BQP', 'BQB', 'BQL', 'BAY', 'BSY', 'BPM', 'BAL', 'BUM', 'FDC', 'BTQ', 'BZP', 'BYP', 'BHT', 'BXK', 'VXD', 'BYC', 'BYB', 'BIV', 'BAC', 'BID', 'BYT', 'BNJ', 'BCD', 'IEW', 'RMP', 'BVP', 'CIN', 'CBC', 'CEJ', 'CCM', 'CCP', 'CID', 'CAX', 'CGT', 'CEF', 'CGV', 'CGY', 'CAJ', 'CZB', 'WBW', 'CHB', 'CHZ', 'CKT', 'CHP', 'CIH', 'CJT', 'CJX', 'CAM', 'CJY', 'CLK', 'CYP', 'CUQ', 'CLP', 'CLT', 'CMB', 'CNJ', 'VBP', 'DAQ', 'CPM', 'CQB', 'CON', 'CSB', 'EFW', 'CSP', 'CST', 'CSL', 'CSC', 'CVT', 'CES', 'CTY', 'CPT', 'CQQ', 'CIP', 'CNZ', 'CXQ', 'CRP', 'CFH', 'CYK', 'CAL', 'CEK', 'CEX', 'CYL', 'CDD', 'CYD', 'CYF', 'CZL', 'CUH', 'ESH', 'CXH', 'CKQ', 'CVK', 'CFP', 'CWM', 'ICQ', 'CBP', 'DAG', 'RAT', 'DBJ', 'DBC', 'DBD', 'RBT', 'DYJ', 'DBB', 'RDT', 'DGJ', 'DVW', 'DDB', 'DKJ', 'DRD', 'DRX', 'TKX', 'UFQ', 'DGY', 'DIL', 'DMM', 'DTT', 'RGW', 'DGP', 'DHB', 'DHP', 'DQD', 'SOQ', 'DQH', 'DXT', 'DJT', 'DKB', 'DJL', 'DKP', 'RVD', 'DHO', 'DLC', 'DLB', 'DLD', 'DIC', 'DTX', 'DLV', 'DNC', 'GZT', 'DMD', 'DEP', 'DNF', 'DNZ', 'DPD', 'RPP', 'DPI', 'DVT', 'LFX', 'DQX', 'DML', 'DQB', 'MOH', 'RHX', 'DRQ', 'DKH', 'RWW', 'DWT', 'DPM', 'DSL', 'DYC', 'RZT', 'DBH', 'DQK', 'DGT', 'DBM', 'DTL', 'RUH', 'DNT', 'DRJ', 'DFJ', 'DWJ', 'DZZ', 'DFM', 'DXL', 'DXX', 'DSJ', 'DXM', 'DXG', 'DKV', 'DXV', 'RXP', 'DXD', 'DYH', 'DYW', 'DYX', 'DYN', 'EXH', 'IAW', 'DBV', 'DYV', 'EWH', 'RYV', 'DYZ', 'DJP', 'DZD', 'DTJ', 'DIP', 'DCH', 'DVQ', 'DNV', 'DFZ', 'DZV', 'DWV', 'ROP', 'DXP', 'DZY', 'DAP', 'RZP', 'EBW', 'RDP', 'RDX', 'EEC', 'RLD', 'ELA', 'EMW', 'RML', 'RYJ', 'ECN', 'FAS', 'FCG', 'FNG', 'FIH', 'FEM', 'FHX', 'FHR', 'FHT', 'FEV', 'FHH', 'FIB', 'FTT', 'FLJ', 'FTB', 'FZB', 'FNH', 'AKH', 'FNP', 'FQS', 'VMW', 'FSJ', 'FUQ', 'FSV', 'FST', 'FKP', 'FSZ', 'FTX', 'FYP', 'FDY', 'FXY', 'FEY', 'FXK', 'FUH', 'FAV', 'FBT', 'FYG', 'FYM', 'FYT', 'FYX', 'FBG', 'FZY', 'FZC', 'VZK', 'GFP', 'VJW', 'GBP', 'GBD', 'GDJ', 'GCN', 'GEP', 'GCV', 'GZB', 'GRH', 'GTW', 'IDW', 'GDV', 'GGZ', 'GVP', 'GGT', 'GGL', 'GGJ', 'GGP', 'GAX', 'GEX', 'GDT', 'GKT', 'GLJ', 'GEJ', 'GFM', 'GHT', 'GLF', 'VOW', 'GLP', 'GMK', 'GMC', 'GRT', 'GNT', 'GNM', 'GPF', 'GEY', 'GAG', 'GQD', 'GQY', 'GZD', 'GST', 'GSW', 'GSP', 'GSL', 'GSD', 'GXD', 'GTJ', 'GAY', 'GTS', 'GTP', 'KEP', 'GXG', 'GYH', 'GXF', 'GIP', 'GYF', 'GAW', 'GUJ', 'GYL', 'GYD', 'GZS', 'GNQ', 'GEH', 'GZY', 'GZJ', 'GSQ', 'GXT', 'GOT', 'GSS', 'GAT', 'AMH', 'HWN', 'HIH', 'VXN', 'HBL', 'HEB', 'HAF', 'XEG', 'VCQ', 'HCZ', 'HCN', 'HCT', 'WKW', 'HCJ', 'HCP', 'HXT', 'HGC', 'HDV', 'HFR', 'HFG', 'HXJ', 'HGP', 'HYM', 'IGW', 'HHT', 'VHD', 'HUD', 'HJJ', 'HJR', 'HFM', 'HIM', 'HJF', 'HJV', 'HJS', 'HJT', 'HDC', 'HXP', 'HJM', 'HKJ', 'HKG', 'KOH', 'HUB', 'HPD', 'HHB', 'HIT', 'HOB', 'HIB', 'ULY', 'HRB', 'VLB', 'HAT', 'HLL', 'HIL', 'HAX', 'VTJ', 'HLT', 'VEH', 'HYP', 'HHL', 'HNH', 'HMJ', 'VAQ', 'HZM', 'VQH', 'HEY', 'HRV', 'HRN', 'HDY', 'HDL', 'VSR', 'VSB', 'VSQ', 'HSQ', 'HOT', 'VCH', 'HHP', 'HSJ', 'HUT', 'HSO', 'HEQ', 'VSJ', 'HQB', 'VTK', 'VTR', 'VTQ', 'HZT', 'HWK', 'RWH', 'VXB', 'HYY', 'VHB', 'VTB', 'HTJ', 'VIX', 'HAY', 'HYK', 'HVQ', 'HUW', 'HQY', 'HGJ', 'WHW', 'VIQ', 'HUN', 'HNO', 'HYJ', 'VZH', 'HZZ', 'VON', 'HZV', 'VXQ', 'JRT', 'JIY', 'JBD', 'JEF', 'JCJ', 'JCK', 'JNV', 'JFD', 'JDB', 'JFP', 'JOB', 'UDH', 'JST', 'VGP', 'JHP', 'JHX', 'JHB', 'JHR', 'JIR', 'JHZ', 'AJH', 'VJD', 'JJS', 'JEY', 'JJB', 'JJW', 'JKT', 'JLJ', 'JMM', 'JWQ', 'JES', 'JOK', 'JNP', 'JVS', 'JPC', 'JQX', 'SSX', 'EGH', 'JSH', 'JCN', 'JRN', 'JVV', 'JSL', 'JET', 'JOP', 'JIB', 'EAH', 'JTB', 'JOM', 'JTJ', 'JNL', 'JWX', 'JUG', 'JKK', 'JUK', 'JXV', 'JXH', 'JJP', 'EPH', 'JXT', 'UEH', 'JRQ', 'JYS', 'JYW', 'JYK', 'JYZ', 'JYH', 'JYJ', 'SZL', 'JYF', 'JXJ', 'JZK', 'WEF', 'JZH', 'JEQ', 'JBN', 'JXK', 'JXP', 'JOD', 'JOF', 'JVP', 'JYD', 'KAT', 'KCR', 'KCP', 'KDX', 'KDT', 'KOB', 'KDC', 'KAW', 'KJB', 'KQX', 'KLC', 'KHR', 'KQL', 'KSH', 'KAB', 'KSB', 'KTT', 'KXZ', 'KAM', 'KHX', 'KXT', 'KZP', 'UBZ', 'LLT', 'LPF', 'LUQ', 'LCQ', 'UCP', 'UCK', 'LCK', 'LDY', 'LRC', 'LDO', 'LDP', 'LVP', 'LVM', 'LJP', 'LOP', 'LFP', 'UFD', 'LNB', 'LGM', 'LOM', 'LGJ', 'LGB', 'UFH', 'LXX', 'LHX', 'JID', 'LNL', 'KLH', 'LHP', 'UNP', 'LEX', 'LRT', 'UDT', 'LVT', 'LKS', 'UJH', 'LJB', 'LJW', 'LJZ', 'UJT', 'LJX', 'UJL', 'LHB', 'ULK', 'LIJ', 'LKF', 'LKB', 'LKQ', 'LAX', 'LAB', 'LRM', 'LLW', 'LWQ', 'LLB', 'UWZ', 'UAP', 'LMX', 'LMB', 'LMJ', 'UNG', 'UQW', 'LPM', 'LPP', 'UPJ', 'LPG', 'UQK', 'UQJ', 'UTW', 'LUM', 'UDQ', 'LGT', 'USP', 'USH', 'LIQ', 'LRN', 'LAF', 'LMK', 'LSV', 'LUL', 'LSG', 'LBT', 'LSD', 'LAS', 'LSB', 'LET', 'LTZ', 'LAR', 'LTP', 'LBM', 'LVZ', 'LTJ', 'VLJ', 'LWK', 'LRJ', 'LNJ', 'UXK', 'LXB', 'LXY', 'LXQ', 'LUG', 'LXK', 'LXC', 'UXP', 'LYY', 'LYK', 'LYT', 'UYK', 'LDD', 'UIH', 'LNF', 'LXL', 'LMH', 'LVS', 'LYX', 'LAQ', 'LYP', 'LPQ', 'LEJ', 'LZT', 'UAQ', 'LIW', 'LIZ', 'LZS', 'LZA', 'LEM', 'LQJ', 'MAH', 'MBY', 'MGY', 'MBN', 'MCF', 'MCL', 'MAP', 'MNF', 'KPM', 'MUQ', 'MOB', 'MDF', 'MRB', 'MGN', 'MHL', 'MHZ', 'MGB', 'MHQ', 'MQQ', 'MHB', 'MLZ', 'MLL', 'MLD', 'MLB', 'MID', 'MGM', 'MUD', 'MLQ', 'MNR', 'UGW', 'MPQ', 'MQB', 'MQS', 'MQF', 'MUT', 'MAB', 'MSW', 'MKW', 'MOM', 'MST', 'MEB', 'MVY', 'MVQ', 'MUP', 'MMW', 'MYS', 'MUR', 'MZJ', 'MEY', 'MFQ', 'NAB', 'NAT', 'NBK', 'NCK', 'NSP', 'NCZ', 'NES', 'NGP', 'NFP', 'NLT', 'NNH', 'NHH', 'NHS', 'NHJ', 'NHD', 'NVT', 'NJS', 'NJB', 'NJD', 'NKP', 'NKT', 'NNQ', 'NLD', 'NIR', 'ULZ', 'NLF', 'NMD', 'NMZ', 'NMX', 'NNS', 'NPZ', 'NQD', 'NQO', 'NQJ', 'NTT', 'NOQ', 'NWV', 'NWP', 'NEH', 'NXQ', 'NXF', 'NXT', 'NUP', 'NIP', 'NAF', 'NZT', 'PAW', 'PAL', 'PNO', 'PAJ', 'PZT', 'PEY', 'PCY', 'PDB', 'PRP', 'BFF', 'PXJ', 'PRT', 'PFB', 'PGL', 'PGM', 'PAM', 'PGZ', 'PHP', 'PHM', 'PHQ', 'PBD', 'PDP', 'PKT', 'PLT', 'PNT', 'PSB', 'PSW', 'PSR', 'PSL', 'PSV', 'PHW', 'PVT', 'PTM', 'PTS', 'PTW', 'PWT', 'PWV', 'PGV', 'POW', 'PWW', 'PYX', 'PYJ', 'PYV', 'PIK', 'PPJ', 'PYK', 'PYP', 'PZG', 'PJH', 'PZD', 'POD', 'PND', 'QOT', 'QAB', 'QQP', 'QRQ', 'QDM', 'QAK', 'QFT', 'QVP', 'QFK', 'QYQ', 'QTP', 'QUY', 'QIP', 'QHD', 'QHP', 'INH', 'QJZ', 'QJN', 'QJB', 'QJW', 'QBT', 'QNY', 'QZV', 'QLD', 'QLY', 'QLZ', 'QIB', 'QGH', 'QIH', 'QMP', 'QSB', 'QSN', 'QXQ', 'QUJ', 'QYH', 'QVH', 'QAT', 'QTJ', 'QWD', 'QWP', 'QRW', 'QXV', 'QXP', 'QXJ', 'QUV', 'QXC', 'QOY', 'QYF', 'QYL', 'QVQ', 'QYJ', 'QSJ', 'QBQ', 'QYT', 'QDZ', 'QRZ', 'QZK', 'RAH', 'RCW', 'RCG', 'RBH', 'RUQ', 'RQP', 'ROK', 'RSZ', 'RSD', 'RXZ', 'RVP', 'RYF', 'RHD', 'ROF', 'OBJ', 'SBP', 'AQW', 'OBP', 'ZWT', 'SBB', 'OCH', 'SWN', 'SCR', 'SCS', 'SMV', 'SCP', 'SCT', 'SCL', 'SDJ', 'ORQ', 'ODY', 'SIL', 'SXC', 'SEP', 'OUD', 'OJQ', 'OLH', 'OFB', 'STB', 'OTW', 'OKJ', 'OGC', 'SNQ', 'SVK', 'JBS', 'SED', 'SHY', 'SBM', 'SHP', 'SKT', 'SHC', 'VOP', 'SSD', 'SHL', 'OXP', 'OHD', 'OZW', 'SEL', 'SZR', 'SVP', 'ODP', 'SQH', 'OJJ', 'SJL', 'SJB', 'SUB', 'OJB', 'SML', 'SAH', 'SKD', 'OLK', 'IMH', 'SRP', 'SJJ', 'SOZ', 'SMM', 'SJD', 'OZL', 'SHM', 'SWT', 'OMP', 'SUR', 'SHJ', 'VLD', 'SPB', 'SLM', 'ZJD', 'SIB', 'SOL', 'LNM', 'SLQ', 'SLC', 'SNT', 'OLY', 'SLP', 'VFQ', 'SCF', 'OQH', 'OMQ', 'SXF', 'SYP', 'SOB', 'SBZ', 'CYW', 'PPT', 'SON', 'SFJ', 'SQM', 'SPF', 'SID', 'SXY', 'SQT', 'SRB', 'SRL', 'SQB', 'SWB', 'SSR', 'SJQ', 'OSK', 'SAD', 'SFT', 'SAT', 'SRD', 'SST', 'SSL', 'MZQ', 'SHX', 'SDH', 'OTB', 'SEV', 'SFM', 'SWP', 'SKB', 'SXR', 'OVH', 'SXZ', 'SAS', 'SOH', 'SXL', 'SXM', 'SXJ', 'FMH', 'SYB', 'SYV', 'OYP', 'SYJ', 'SPJ', 'OEJ', 'SOP', 'OYD', 'SYL', 'BDH', 'SAY', 'SUD', 'OYJ', 'SAJ', 'SND', 'OHH', 'SRH', 'BJQ', 'OZP', 'OZY', 'SZD', 'SZB', 'SNM', 'SIN', 'SEM', 'KAH', 'ITH', 'TMK', 'TID', 'TAJ', 'TBF', 'TBB', 'TTH', 'TCX', 'TZK', 'TCL', 'TCK', 'TRQ', 'TDZ', 'TGL', 'TGC', 'TOL', 'TGV', 'THX', 'THM', 'THF', 'THG', 'TKH', 'TIX', 'TNJ', 'TOT', 'PDQ', 'TZP', 'TMD', 'TEX', 'TJH', 'TFZ', 'TIZ', 'TLB', 'PXT', 'QSL', 'TMN', 'TNN', 'TLS', 'TRC', 'TCJ', 'TVT', 'TVW', 'TIT', 'TEB', 'TQX', 'TTK', 'TQL', 'TQJ', 'TCT', 'TAB', 'TIM', 'TUT', 'THB', 'TXJ', 'TSW', 'TCH', 'TRZ', 'TND', 'TYF', 'TIL', 'TYJ', 'TYB', 'TYP', 'TEK', 'TZH', 'TZJ', 'TXK', 'TZV', 'TEW', 'QWH', 'WBP', 'WAP', 'WVP', 'WUY', 'WEW', 'WCT', 'WEQ', 'WDB', 'WRB', 'WBK', 'WDL', 'WHP', 'WNZ', 'WVT', 'WRN', 'WDP', 'WHX', 'WFK', 'WFB', 'WUT', 'WXT', 'WGB', 'WGY', 'WGL', 'WGM', 'WVC', 'WHB', 'WHF', 'WCJ', 'WUB', 'WAM', 'WJP', 'WJL', 'WJJ', 'WQB', 'WKT', 'WBT', 'WLC', 'WEB', 'WVX', 'VHH', 'WLK', 'WQC', 'WSC', 'WLX', 'WBY', 'WRX', 'WNQ', 'WWG', 'WVY', 'WNJ', 'WPT', 'WUP', 'WQL', 'WWP', 'WSJ', 'WEV', 'WSP', 'WTP', 'WSV', 'WZJ', 'WVR', 'WGH', 'WVB', 'WXV', 'WVV', 'IFH', 'WXN', 'WYZ', 'WYB', 'RYH', 'WWB', 'WIM', 'WYC', 'WZL', 'WZY', 'WZV', 'WZB', 'WQP', 'WKD', 'EAM', 'XAZ', 'XAF', 'XAP', 'EBP', 'XLP', 'ECH', 'XCD', 'XEM', 'XRX', 'XCB', 'XCT', 'EDW', 'EJM', 'XMP', 'XEZ', 'XOD', 'EFG', 'XFV', 'XFW', 'EGG', 'XGN', 'XUJ', 'XIJ', 'XGJ', 'NBB', 'XXB', 'XIR', 'XWJ', 'EEP', 'XAX', 'XHB', 'EHQ', 'XHP', 'XEC', 'XYD', 'XYP', 'EKY', 'XJB', 'EJG', 'XJV', 'ENP', 'XJM', 'EKM', 'XJT', 'XTJ', 'XMT', 'EKB', 'EAQ', 'XNB', 'XDD', 'ELP', 'XPX', 'XLB', 'XLJ', 'XYB', 'GCT', 'XPH', 'XLD', 'XZB', 'XGT', 'XMD', 'XMB', 'XAT', 'XNV', 'XRN', 'ENQ', 'XNN', 'XAW', 'XPN', 'XPY', 'XPM', 'XOS', 'EPQ', 'XIW', 'XQB', 'XQD', 'XQJ', 'XRL', 'ESP', 'XSB', 'XZN', 'XSV', 'XSP', 'XIZ', 'XAM', 'XOB', 'XDT', 'XSJ', 'XTQ', 'XTP', 'XAN', 'EIP', 'XJQ', 'EPD', 'XWF', 'XSN', 'ENN', 'XQY', 'XXQ', 'XIF', 'XOV', 'XXM', 'XGQ', 'XZC', 'XXP', 'XDB', 'XUY', 'XBY', 'XWN', 'SNZ', 'XHM', 'EEQ', 'XFM', 'XYX', 'EIF', 'EJH', 'EXM', 'EYB', 'XZJ', 'UUH', 'XZX', 'XRP', 'XZT', 'XXV', 'XZD', 'XRD', 'ERP', 'YAC', 'YAX', 'YAS', 'YNB', 'YBB', 'YUD', 'YAB', 'YKM', 'AIH', 'YYB', 'YER', 'YKJ', 'YYY', 'YQQ', 'YIN', 'YHN', 'YCK', 'YEK', 'YNF', 'YAL', 'YPK', 'YAP', 'ACP', 'IXH', 'YCT', 'YDQ', 'YDJ', 'YDM', 'YGS', 'YGH', 'YDG', 'YAJ', 'IIQ', 'YYM', 'YRB', 'YOV', 'YIK', 'YOB', 'EVH', 'YHP', 'AEP', 'YHM', 'URH', 'YAM', 'AEW', 'YHG', 'AJP', 'YAT', 'YGJ', 'YJT', 'YIR', 'AFP', 'AZK', 'RFH', 'YGT', 'YJX', 'YLW', 'YSM', 'YDY', 'YLX', 'YLB', 'YSY', 'ALW', 'YLM', 'YLD', 'YQP', 'YUM', 'YMF', 'YVV', 'YXJ', 'YMN', 'YMM', 'YST', 'YNK', 'YVM', 'YNR', 'YZJ', 'ABM', 'YPP', 'UPH', 'YSR', 'AQK', 'YQT', 'YQV', 'YGP', 'YBF', 'YSJ', 'AUM', 'YSF', 'YUK', 'YSV', 'YVH', 'ASP', 'YSP', 'YAD', 'AIP', 'YSX', 'YUT', 'YIP', 'YTQ', 'YTZ', 'YSL', 'YUX', 'YWM', 'YHW', 'YOG', 'ACG', 'YXM', 'YIG', 'YYH', 'AFW', 'YIQ', 'ARP', 'YYL', 'YYJ', 'YZY', 'UZH', 'YSZ', 'YZK', 'YQM', 'AEM', 'YZD', 'ZEY', 'ZAD', 'ZBP', 'ZUP', 'ZJJ', 'ZCN', 'ZHY', 'ZQK', 'ZIK', 'ZCV', 'ZHT', 'ZDP', 'ZDB', 'ZFM', 'ZGD', 'ZGB', 'ZHX', 'VNH', 'ZIN', 'ZJY', 'ZUB', 'ZYP', 'ZOB', 'ZDH', 'ZEH', 'ZOD', 'CWJ', 'ZWQ', 'ZUJ', 'ZBW', 'ZLV', 'ZLT', 'ZIV', 'ZLD', 'ZXX', 'ZOQ', 'ZGF', 'ZDJ', 'VNJ', 'ZNJ', 'ZPF', 'ZPS', 'ZPR', 'ZVP', 'ZQY', 'ZTK', 'ZRC', 'ZLM', 'ZGQ', 'ZOG', 'ZHD', 'ZSQ', 'ZSY', 'ZSZ', 'ZSG', 'ZOP', 'ZWB', 'ZWD', 'ZOY', 'ZTN', 'ZXS', 'ZVT', 'ZIP', 'ZXC', 'ZVY', 'ZYN', 'ZAW', 'ZYJ', 'ZUW', 'GOS', 'ZUS', 'ZUX', 'ZZY', 'ZZM', 'ZXP', 'ZAL', 'ZZC', 'ZAQ', 'XPF', 'AQC', 'ARX', 'AUR', 'ARG', 'ASE', 'AXL', 'ADF', 'BBZ', 'BBE', 'FWH', 'BMP', 'FGQ', 'FEP', 'FHP', 'FCP', 'BBY', 'BRT', 'BFQ', 'BUB', 'FZW', 'BSN', 'BGY', 'NGQ', 'BVT', 'BXY', 'UKZ', 'FWP', 'FHW', 'FNC', 'BDE', 'BIK', 'FOP', 'CUY', 'CBY', 'VAT', 'GUH', 'KNW', 'CVO', 'FVH', 'CNG', 'FQQ', 'FPQ', 'CQJ', 'COW', 'CSE', 'CSU', 'CBQ', 'RXQ', 'CTE', 'CNS', 'CWY', 'CBH', 'CXE', 'CYN', 'CNQ', 'CWT', 'DCZ', 'RBZ', 'DCG', 'DCJ', 'IYQ', 'RDD', 'RWT', 'DRB', 'KRQ', 'DNE', 'RGT', 'RMT', 'RTQ', 'UWQ', 'NVQ', 'RRQ', 'FWQ', 'DJE', 'DIM', 'DNY', 'KOQ', 'DSD', 'DRH', 'RSC', 'PRH', 'DAL', 'OWH', 'DTO', 'WWQ', 'DNJ', 'DDG', 'DWG', 'IRQ', 'DBN', 'KJW', 'DOK', 'DYG', 'DOP', 'WZQ', 'FQW', 'IXW', 'EGY', 'EFN', 'FBZ', 'FDT', 'FDZ', 'PUH', 'FUW', 'FEW', 'FLN', 'FNM', 'FUY', 'FQE', 'KCQ', 'FAW', 'FSL', 'FOQ', 'FZQ', 'NZQ', 'FBM', 'FYB', 'FDG', 'FZG', 'GCG', 'VUW', 'GAE', 'GMP', 'GCZ', 'GUP', 'FMW', 'GNN', 'KIW', 'GVW', 'HGD', 'GEM', 'GLE', 'GEZ', 'IMQ', 'FBQ', 'GQT', 'GXM', 'GAZ', 'GPT', 'GDE', 'GUN', 'FFQ', 'FKQ', 'GBS', 'GPM', 'GAJ', 'STS', 'KQW', 'KEW', 'GNP', 'HNS', 'PLH', 'HFF', 'HKB', 'SER', 'HUL', 'HPP', 'KDQ', 'HDJ', 'HDO', 'HTV', 'HTB', 'COH', 'ENH', 'KGN', 'KAN', 'HNN', 'KXN', 'HPB', 'KAQ', 'HCF', 'KHN', 'KHQ', 'IHN', 'FAQ', 'HBM', 'KLQ', 'VLY', 'KMQ', 'IUQ', 'HPV', 'HNG', 'HOH', 'HVZ', 'FBH', 'HFV', 'HPN', 'KRN', 'KSN', 'NYH', 'IHP', 'HLN', 'VUR', 'KNN', 'KXQ', 'HKP', 'HTY', 'HEK', 'IYN', 'KXY', 'HYT', 'HWV', 'KNQ', 'JUL', 'JAJ', 'JDG', 'NSH', 'PFQ', 'JHD', 'JOL', 'JMP', 'JLS', 'JLF', 'KJQ', 'JVK', 'JME', 'JCS', 'JJH', 'OKH', 'JUS', 'JNJ', 'JWH', 'JSM', 'JPQ', 'JUN', 'NRH', 'JDV', 'LOH', 'JMZ', 'JXG', 'JBE', 'JBJ', 'JOW', 'JTN', 'JYL', 'PYQ', 'PYH', 'JZV', 'JEP', 'KBF', 'FLQ', 'KHU', 'QKW', 'KLD', 'KOM', 'KTQ', 'KVW', 'IDZ', 'UCZ', 'GMH', 'LTQ', 'LCF', 'NWW', 'ILQ', 'UUP', 'VCZ', 'LGK', 'ACQ', 'FVW', 'LVO', 'UOQ', 'UQQ', 'INW', 'LLQ', 'KFQ', 'LQM', 'LXV', 'KGQ', 'BNQ', 'UDP', 'LNE', 'LBN', 'IKW', 'UQZ', 'LNK', 'LUF', 'UKK', 'COK', 'KFW', 'KBQ', 'UKQ', 'INJ', 'LPE', 'LGY', 'UDV', 'IVW', 'LAG', 'LDH', 'LSE', 'KRW', 'LBK', 'LEH', 'LUK', 'LNR', 'LSZ', 'LZE', 'LDJ', 'OMH', 'MHN', 'MDN', 'MNO', 'MJN', 'MLR', 'MBJ', 'MLM', 'MSR', 'MBK', 'MBS', 'MIF', 'IUW', 'MSN', 'MXJ', 'MYO', 'KIQ', 'MBM', 'MZF', 'MZM', 'NBE', 'NEF', 'NCE', 'NDG', 'NXG', 'NDJ', 'NOJ', 'NUT', 'NFG', 'NDN', 'NKW', 'FIW', 'NDQ', 'LLH', 'NMO', 'NFZ', 'NXZ', 'NBS', 'NOY', 'NCQ', 'NYE', 'NYF', 'PAN', 'PUE', 'PBM', 'PBE', 'PCE', 'PGW', 'PAK', 'PUT', 'PNN', 'POK', 'PEQ', 'PAZ', 'PPW', 'PUD', 'PSK', 'PBG', 'PYG', 'PYF', 'PDV', 'PUK', 'PZM', 'PAE', 'PMW', 'QGJ', 'QFW', 'QCE', 'QHK', 'QMQ', 'QET', 'QFB', 'QBM', 'QDE', 'QIM', 'QEW', 'QNB', 'QEJ', 'QVW', 'QAY', 'QSQ', 'QIJ', 'QSO', 'QGV', 'QBY', 'QNC', 'QWQ', 'QNZ', 'QZQ', 'RUO', 'RQW', 'RCK', 'RXG', 'RIH', 'RVW', 'RKO', 'RVQ', 'SFF', 'SDL', 'FIQ', 'KKW', 'SUP', 'NFQ', 'SOK', 'GQH', 'AHQ', 'SXP', 'SWZ', 'OJT', 'IPW', 'SYM', 'IXP', 'IQW', 'SHS', 'SVM', 'FMQ', 'HMY', 'ONC', 'SBN', 'SQE', 'SQN', 'SMR', 'NSQ', 'ARQ', 'KUQ', 'KSQ', 'RNQ', 'INQ', 'QHW', 'STE', 'OGQ', 'NPH', 'SLH', 'SSH', 'GPH', 'IPQ', 'MPH', 'OYT', 'OVQ', 'OCT', 'SNV', 'IOQ', 'SRQ', 'IFQ', 'QQJ', 'OSW', 'TAD', 'TOK', 'TBZ', 'TTN', 'TIV', 'THR', 'TAM', 'JYN', 'TJN', 'TEN', 'TXL', 'TJB', 'KXH', 'TAR', 'TNS', 'TNW', 'TIJ', 'TWJ', 'KQQ', 'THN', 'TAZ', 'TNV', 'TST', 'TBE', 'TDE', 'TOP', 'WGK', 'WFG', 'WBL', 'WHK', 'WPC', 'WMT', 'WFN', 'WAR', 'WET', 'WSE', 'WTZ', 'IIH', 'WAH', 'WOV', 'WDH', 'WBS', 'WCS', 'WYG', 'WEJ', 'WZE', 'WIF', 'WBZ', 'XDZ', 'XVF', 'ERN', 'EWW', 'XFT', 'NQQ', 'FVQ', 'XTV', 'XJN', 'GDN', 'WDQ', 'EJQ', 'EWQ', 'IRW', 'NKQ', 'IJP', 'ITW', 'XKN', 'UNN', 'EMQ', 'EGQ', 'EDQ', 'EDP', 'XWC', 'EXF', 'XWE', 'QSH', 'EGF', 'XBG', 'XQF', 'OYN', 'XOY', 'XWS', 'EZF', 'FNQ', 'YFW', 'RGH', 'ABV', 'WMW', 'YSK', 'YEG', 'AWW', 'NAQ', 'AOJ', 'IXQ', 'YBZ', 'VTM', 'GTH', 'AJV', 'RVH', 'YKP', 'YXL', 'QUH', 'YEF', 'YAG', 'YEY', 'YMX', 'YKQ', 'KPQ', 'ASY', 'YCZ', 'KZQ', 'YGG', 'YTS', 'CTQ', 'YKG', 'YLK', 'YTL', 'YTK', 'YXS', 'YBS', 'YUH', 'AXM', 'YVK', 'YZV', 'YXG', 'YXY', 'CTH', 'IZJ', 'ZDS', 'ZHP', 'ZMN', 'ZEC', 'ZUT', 'ZHW', 'ZJE', 'ZIJ', 'ZPQ', 'IZW', 'KKQ', 'ZKE', 'ZSN', 'ZRQ', 'ZLN', 'ZCS', 'FCQ', 'ZQH', 'KWQ', 'ZAZ', 'ZXJ', 'FYW', 'ZYE', 'ZNE', 'ZEJ', 'WZW', 'ZAP', 'ZNK', 'ZDC', 'ZAF', 'KVQ']

def get_name(telecode):

return names[telecodes.index(telecode)]

def get_telecode(name):

return telecodes[names.index(name)]

print(get_name("VAP"))

print(get_telecode("北京"))

python实现火车票查询_Python 实现火车票查询工具相关推荐

  1. python autoit打开软件_Python+AutoIt实现界面工具开发

    前言 不同于Linux服务器上的命令行操作,在windows系统上用户的使用习惯还是倾向于使用有界面的工具.如果工具是命令行交互操作的方式,可能是有悖于在windows上使用的操作习惯,往往不容易推广 ...

  2. python快递费用计算_Python制作快递查询系统,来感受到了Python的强大!

    原标题:Python制作快递查询系统,来感受到了Python的强大! 导语 今天来做个简答的python案例,利用Python制作一个简单的快递查询系统. 让我们愉快地开始吧~ 开发工具 Python ...

  3. python mongodb分页查询_python数据库分页查询语句

    用django将数据从数据库提出并分页展示 不要笑这个太简单噢~~大神们路过的请自动忽略本文-- '''django有自带的分页功能,我这个是自己做的分页,效果其实是一样的. ''' 要把数据提出并展 ...

  4. python快递费用计算_Python实现快递查询

    今天介绍一个19行代码就能搞定的查询快递的脚本. 开发语言:Python 开发环境:windows+Python3.6版本 开发平台:PyCharm 首先导入json以及request模块 impor ...

  5. python爬取物流信息_python爬虫快递查询系统(源码)

    import requests import json def get_express_type(postid): '''根据快递单号来智能判断快递类型''' url = 'http://www.ku ...

  6. python万年历时钟下载_Python | “万年历——日期查询”

    图文编辑:逻辑熊猫 图片来源:网络与截图 欢迎朋友圈各种姿势转发 一个软件的关键在于 你想用它来做什么 一.功能描述查询日期如:wnl.py 2007/01/01 显示月日历:wnl.py 2007/ ...

  7. python mysql批量查询_Python + MySQL 批量查询百度收录

    做SEO的同学,经常会遇到几百或几千个站点,然后对于收录情况去做分析的情况 那么多余常用的一些工具在面对几千个站点需要去做收录分析的时候,那么就显得不是很合适. 在此特意分享给大家一个批量查询百度收录 ...

  8. python 表格查询_python单表查询

    创建表 create table employee( id intnotnull unique auto_increment, name varchar(20) notnull, sex enum(' ...

  9. python制作气温分布图_Python案例:查询城市天气并绘制最高气温与最低气温的折线图...

    1.编写源代码 - 查询城市天气. # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary scrip ...

  10. python调用接口查询_python调用接口查询 顺丰单号 物流信息

    爱查快递 查询 顺丰单号 物流信息 Query.sign = function() { function t(t) { var e, i, s, a, r = -1; for (e = 0, s = ...

最新文章

  1. GNN|如何做的比卷积神经网络更好?
  2. SOLO:一次性预测语义类别和实例掩码
  3. 转换到 COFF 期间失败: 文件无效或损坏 解决方法
  4. Linux位置无关代码实现,浅谈位置无关代码
  5. 对注册表操作的REG函数
  6. 基于JAVA+SpringMVC+MYSQL的数码商城
  7. 关于java中判断字符串相等==和equal 详解
  8. 空间apiLinux系统调用及用户编程接口(API)学习
  9. python实现简易动态贝叶斯网络的推断
  10. PreferenceScreen 中如何自定义SwitchPreferenceCompat的布局
  11. Verilog语法概述(一)
  12. ai条码插件免安装_Illustrator条形码插件
  13. android hci设备,Android Bluetooth hci 命令分析
  14. 解决 remote Support for password authentication was removed on August 13, 2021.
  15. 股票重大利好开盘封涨停买不到?试试这个办法
  16. 组织行为学笔记(4)——人格与价值观
  17. 如何自学入门网络安全?
  18. [M1]Daily Scum 9.29
  19. 【入门笔记】量化投资是什么?
  20. c++程序设计报告总结

热门文章

  1. Windows无法连接到无线网络
  2. ppt 转html乱码,ppt转换成pdf乱码解决方法.pdf
  3. 惠普笔记本苹果w10双系统_苹果macbook pro安装win10双系统的方法
  4. 脚本小子-------使用python脚本完成mysql数据库备份、恢复、查询并生成excel
  5. 使用vue简单实现音乐播放器
  6. WAMP安装与基础配置
  7. 系统地学习打字(个人见解)
  8. 包络线公式如何用计算机求,包络线公式
  9. 反向传播算法为什么要“反向”
  10. Fast and Accurate Recognition of Chinese Clinical Named Entities with Residual Dilated Convolutions