Python Re:覆盖问题

时间:2015-08-11 18:56:52

标签: python regex

我在替换字符串的一部分时遇到了问题。现在这个代码。我的目标是为每个包含此词典中的键的字符串。

mapping = { "St": "Street",
            "St.": "Street",
            'Rd': 'Road',
            'Rd.': 'Road',
            'Ave': 'Avenue',
            'Ave.': 'Avenue',
            'Ln':'Lane',
            'Ln.':'Lane',
            'Dr':'Drive',
            'Dr.':'Drive',
            'Pl':'Place',
            'Pl.':'Place',
            'Pkwy':'Parkway',
            'Blvd.': 'Boulevard',
            'Blvd': 'Boulevard'
            }

用字典中的值替换字符串的那部分。

street_type_re = re.compile(r'\b\S+\.?$', re.IGNORECASE)
def update_name(name, mapping):
    for key,value in mapping.iteritems():
        if key in name:
            newname = re.sub(street_type_re,value,name)
            print name,'==>',newname
    return name

现在代码正在做这样的事情

National Rd SW ==> National Rd Road

我需要修复它才能返回此

National Rd SW ==> National Road SW

1 个答案:

答案 0 :(得分:1)

newname = re.sub(key,value,name)

您可以简单地替换key,而不是将其与预编译的正则表达式或

匹配
newname = re.sub(r"\b"+key+r"\b",value,name)

您的$

替换了最后一个