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

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

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


熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板