扫描txt文件,翻译字典中找到的某些单词[Python]

时间:2012-05-17 07:25:42

标签: python file dictionary word translate

我有一个包含此文件的文件:

((S000383212:0.0,JC0:0.244562):0.142727,(S002923086:0.0,(JC1:0.0,JC2:0.0):0.19717200000000001):0.222151,((S000594619:0.0,JC3:0.21869):0.13418400000000003,(S000964423:0.122312,JC4:0.084707):0.18147100000000002):0.011521999999999977); 

我有两个词典包含:

org = {'JC4': 'a','JC0': 'b','JC1': 'c','JC2': 'c','JC3': 'd'}

RDP = {'S000383212': 'hello', 'S002923086': 'this', 'S000594619': 'is'}

我每次说出其中一个词典中的一个词并将其转换为替代词时,我怎么能找到?

即。如果它遇到'JC0'那么它会把它翻译成'b'

3 个答案:

答案 0 :(得分:5)

for key in org.keys() + RDP.keys():
    text = text.replace(key, org.get(key, None) or RDP.get(key, None))

当然,正如TryPyPy所说,如果你只是合并了这些词汇,它会变得更加简单:

org.update(RDP)
for item in org.items():
    text = text.replace(*item)

答案 1 :(得分:2)

如果性能不是很重要,您可以使用以下代码:

with open('your_file_name.txt') as f:
    text = f.read()
    for key, value in org.items() + RDP.items():
        text = text.replace(key, value)

此代码的时间复杂度为O(n * k),其中ntext的长度,k是两个词典中的条目数。如果这种复杂性不适合您的任务,Aho-Corasick algorithm可以帮助您。

答案 2 :(得分:1)

您应该使用replace字符串方法。