Maison  >  Questions et réponses  >  le corps du texte

Python正则表达式匹配问题

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

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


高洛峰高洛峰2914 Il y a quelques jours1088

répondre à tous(1)je répondrai

  • 三叔

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


    répondre
    0
  • Annulerrépondre