首页 > 解决方案 > 正则表达式只提取一个单词

问题描述

我有一个像这样的复杂文件:

“start_nm”:“波士顿”,“bus_num”:“1”,“bus_num”:“2”,“dest_nm”:“纽约”

我想得到Boston,1,2,newyork。问题是:有些城市有1,2,3,5,有些有1,2。1)我怎样才能在一个简单的语句中得到它们,而不是没有多个 if 语句?2)由于数量bus_num是动态的,我该如何保持循环?

match1 = re.search('start_nm\":\"([^"]*)', line)
    if match1:
        print ("The start is  :"+match1.group(1))
match2= re.search('bus_num\":\"(\d+)', line)
    if match1:
        print ("The start is  :"+match1.group(1))

我能够提取它们,但寻找一种简单的方法来: 1)除了这个大的 if 任何包的所有语句的条件。2)当长度是动态的时,bus_num我怎么能有循环?

标签: pythonregex

解决方案


快速而肮脏的方法是查找:"和 next之间的所有内容",如下所示:

>>> line = '>   "start_nm":"BOSTON","bus_num":"1", "bus_num":"2","dest_nm":"NEW YorK"'
>>> re.findall(r':"(.*?)"', line)
['BOSTON', '1', '2', 'NEW YorK']

推荐阅读