Python-Regex-将一个匹配项馈送到另一个匹配项

Python-Regex-将一个匹配项馈送到另一个匹配项,python,regex,Python,Regex,我有一个函数,它迭代字符串的各个部分,如果在字典中找到了该部分,则将其替换为键: def normalize(street): acronyms = {'AVE':'AVENUE', 'RD': 'ROAD', 'BLVD': 'BOULEVARD', 'PKWY': 'PARKWAY','HWY':'HIGHWAY', 'ST': 'STREET', 'E': 'EAST','W':'WEST','S': 'SOUTH'

我有一个函数,它迭代字符串的各个部分,如果在字典中找到了该部分,则将其替换为键:

def normalize(street):
            acronyms = {'AVE':'AVENUE', 'RD': 'ROAD', 'BLVD': 'BOULEVARD', 
            'PKWY': 'PARKWAY','HWY':'HIGHWAY', 'ST': 'STREET',
            'E': 'EAST','W':'WEST','S': 'SOUTH','N': 'NORTH'}
            return [re.sub(r"\b%s\b" %street_part, acronyms[street_part], 
            street) for street_part in street.split() if street_part in 
            acronyms]  

normalize('123 E MAIN AVE')
['123 EAST MAIN AVE', '123 E MAIN AVENUE']
鉴于输出需要: [‘东大街123号’


如何将每个返回值反馈给理解,以便进一步扩展?或者在理解中迭代以获得最终的扩展地址?请帮忙

除非这里有复杂的正则表达式模式,否则我建议只在生成器中对dict进行索引

In [1051]: acronyms = ...

In [1052]: text = '123 E MAIN AVE'

In [1055]: ' '.join(acronyms.get(x, x) for x in text.split())
Out[1055]: '123 EAST MAIN AVENUE'

acronyms.getx,x返回替换字符串(如果存在),或者只是重新回显原始字符串。

将函数更改为:

def normalize(street):
        acronyms = {'AVE':'AVENUE', 'RD': 'ROAD', 'BLVD': 'BOULEVARD',\
                    'PKWY': 'PARKWAY','HWY':'HIGHWAY', 'ST': 'STREET',\
        'E': 'EAST','W':'WEST','S': 'SOUTH','N': 'NORTH'}
        for street_part in street.split():
            if street_part in acronyms:
                street = re.sub(r"\b%s\b" %street_part, acronyms[street_part], street)
        return street

@莫克希亚姆很乐意帮忙!