Python正则表达式匹配问题
高洛峰
高洛峰 2016-10-27 10:08:18
0
1
1033

待处理的部分文本(为方便阅读,已做换行处理,实际文本没有)如下:

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', }


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆 (1)
三叔

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'}


    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!