我有这本词典:
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'
所以。我的代码有什么问题,我该如何解决?
答案 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
结合使用,您应该可以解决这个问题。