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
@莫克希亚姆很乐意帮忙!