对于多字符串替换,我有代码
import ast
def replace_all(text, dic):
for i, j in dic.iteritems():
text = text.replace(i, j)
return text
my_text = open('p.txt', 'r').read()
reps2 = open('dic.txt', 'r').read()
reps3 = ast.literal_eval(reps2)
txt = replace_all(my_text, reps3)
print txt
但是,价值转换的关键很少。我是python的新手,请提出问题所在。 dic.txt具有30000个键值对。
p.txt文件内容就像
OS11T0116000
OS01T0331100
OS11T0116000
OS03T0663800
OS11T0116000
OS05T0189904
OS11T0116000
OS08T0528500
dic.txt文件的内容就像
{'Os01T0101800':'LOC_Os01g01170',
'Os01T0101900':'LOC_Os01g01180',
'Os01T0102000':'LOC_Os01g01190',
'Os01T0102300':'LOC_Os01g01280',
'Os01T0102400':'LOC_Os01g01290',
'Os01T0102500':'LOC_Os01g01295'}
答案 0 :(得分:2)
您的原始文本为大写,但字典中的's'
为小写。 'S'
和's'
是两个不同的字母。将大写字母的键添加到字典中:
reps3.update({k.upper(): v for k, v in reps3.items()})