使用字典和dic.iteritems替换单词的意外输出 - Python

时间:2014-08-24 16:12:47

标签: python dictionary

我有这本词典:

global dicnames

dicnames= {'co':'company' , 'svcs':'services' , 'hlth':'health' , 'equip':'equipment', 'corp':'corporation', 'intl':'international' } 

我创建了这个函数,用字典中的值替换字符串中的某些单词:

def reemp(text):

    for i , j in dicnames.iteritems():
        text=text.replace(i,j)
    return text

它正在使用除'corp'之外的所有单词。例如:

 reemp('uni corp')

    Out[24]:
    'uni companyrp'

所以。我的代码有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:2)

使用OrderedDict,以便按照您期望的顺序进行替换。

from collections import OrderedDict

dicnames = OrderedDict([
    ('svcs', 'services'),
    ('hlth', 'health'),
    ('equip', 'equipment'),
    ('corp', 'corporation'),
    ('intl', 'international'),
    ('co', 'company'),
])

def reemp(text):
    for i , j in dicnames.iteritems():
        text = text.replace(i,j)
    return text

print(reemp('uni corp'))

但即便如此,你也会遇到问题 - 'co'开始'公司'和'公司'。您将获得多个替换。您需要重做reemp,以便只进行一次替换。

这将为您做一次替换:

def reemp(text):
    for i , j in dicnames.iteritems():
        if i in text:
            return text.replace(i,j)
    return text

如果将其与OrderedDict结合使用,您应该可以解决这个问题。