Heim > Fragen und Antworten > Hauptteil
待处理的部分文本(为方便阅读,已做换行处理,实际文本没有)如下:
var station_names ='@bjb|北京北|VAP|beijingbei|bjb|0 @bjd|北京东|BOP|beijingdong|bjd|1 @bji|北京|BJP|beijing|bj|2 @bjn|北京南|VNP|beijingnan|bjn|3 @bjx|北京西|BXP|beijingxi|bjx|4 @gzn|广州南|IZQ|guangzhounan|gzn|5 @cqb|重庆北|CUW|chongqingbei|cqb|
最开始的代码是这样的:
r=requests.get(url,verify=False) stations=re.findall(r'([A-Z]+)|([a-z]+)',r.text) stations=dict(stations) stations=dict(zip(stations.values(),stations.keys()))
得到的输出如下:
{ 'acheng': 'ACB', 'aershan': 'ART', 'aershanbei': 'ARX', 'aihe': 'AHP', 'aijiacun': 'AJJ', }
现在在Python中,想进一步,用正则表达式提取出其中的中文站名和对应的英文大写缩写。尝试了多次都失败了。。。请问要怎么写。。。也就是说想要输出的是:
{ '阿城': 'ACB', '阿尔山': 'ART', '阿尔山北': 'ARX', '艾河': 'AHP', '艾家村': 'AJJ', }
三叔2016-10-27 10:09:13
12306 站点信息 ,Python3
station_names ='@bjb|北京北|VAP|beijingbei|bjb|0@bjd|北京东|BOP|beijingdong|bjd|1@bji|北京|BJP|beijing|bj|2@bjn|北京南|VNP|beijingnan|bjn|3@bjx|北京西|BXP|beijingxi|bjx|4@gzn|广州南|IZQ|guangzhounan|gzn|5@cqb|重庆北|CUW|chongqingbei|cqb|6@cqi|重庆|CQW|chongqing|cq|7@cqn|重庆南|CRW|chongqingnan|cqn|8@gzd|广州东|GGQ|guangzhoudong|gzd|9@sha|上海|SHH|shanghai|sh|10@shn|上海南|SNH|shanghainan|shn|11@shq|上海虹桥|AOH|shanghaihongqiao|shhq|12@shx|上海西|SXH|shanghaixi|shx|13@tjb|天津北|TBP|tianjinbei|tjb|14@tji|天津|TJP|tianjin|tj|15@tjn|天津南|TIP|tianjinnan|tjn|16' import re, pprint as pp ''' @拼音缩写三位|站点名称|编码|拼音|拼音缩写|序号 ''' ptn=re.compile(r'@[^|]+' #拼音缩写三位 r'\|([^|]+)'#站点名称 r'\|([^|]+)'#编码 r'\|[^|]+' #拼音 r'\|[^|]+' #拼音缩写 r'\|[^@]+' #序号 ,re.X) sname=dict(ptn.findall(station_names)) pp.pprint(sname)
效果:
{'上海': 'SHH', '上海南': 'SNH', '上海虹桥': 'AOH', '上海西': 'SXH', '北京': 'BJP', '北京东': 'BOP', '北京北': 'VAP', '北京南': 'VNP', '北京西': 'BXP', '天津': 'TJP', '天津北': 'TBP', '天津南': 'TIP', '广州东': 'GGQ', '广州南': 'IZQ', '重庆': 'CQW', '重庆北': 'CUW', '重庆南': 'CRW'}