首页 > 解决方案 > 如何从Python中的字符串中仅替换部分单词

问题描述

我有一个街道名称列表

streetNames = ['WELSESTRAAT', 'HENDRIKLAAN', 'LOMMERWEG']

还有另一个带有街道缩写的列表

streetAbbr = [['WEG', 'WG'], ['STRAAT', 'STR'],['LAAN', 'LN']]

我试图遍历街道名称并用 str 替换 straat,用 wg 替换 weg 等等,但我被困在替换部分,因为只有单词的一部分没有这种方法。

for name in streetNames:
    for abbr in streetAbbr:
        if str(abbr[0]) in str(name):
            name.replace('straat', abbr[1]) #doesn't work 

标签: pythonstringlist

解决方案


您的代码中的问题是您正在替换您正在迭代的变量,这对原始列表没有影响。而是通过索引它重新分配给列表:

d = dict(streetAbbr)
# {'WEG': 'WG', 'STRAAT': 'STR', 'LAAN': 'LN'}

for k,v in d.items():
    for i, name in enumerate(streetNames):
        if k in name:
            streetNames[i] = name.replace(k, v)

print(streetNames)
# ['WELSESTR', 'HENDRIKLN', 'LOMMERWG']

推荐阅读