用DICT python

时间:2016-10-31 18:38:29

标签: python string list dictionary replace

我在这里看了很多例子,但我无法弄清楚发生了什么。任何帮助表示赞赏。

我有一个文本文件,我希望通过字典将数字翻译成单词。

由于文本文件太长,我只是给出一个简短的样本。 文本文件:

Movie: 12 15 11 13  
Director: 1 9 2 3  

我有一个由制表符分隔的文件,我认为我已经制作成了一个词典。 dictfile:

1 Adam  
2 Lee  
3 Tom  
9 Jones  
11 Hostel  
12 WoW  
13 Home  
15 Surf

我到目前为止的代码将运行文本文件并仅翻译它的第一个数字。

所以对于11号,而不是用宿舍取代它,它将用AdamAdam取而代之。如果我在数字上添加单词边界\ b,则不会替换任何内容。

代码:

f = [i.strip().split('\t') for i in open('dict')]  


with open('new.txt', 'w') as outfile, open('printnumbers') as infile:  
        for line in infile:  
            for oldword, newword in f:  
                line = line.replace(oldword, newword)  
    outfile.write(line)  

最终我希望能够用一个dict替换一行,用另一个替换下一行。我会尝试做更多的研究。

再次感谢。

1 个答案:

答案 0 :(得分:2)

首先我们将从dictfile构建一个字典,然后我们将该字典应用于txtfile

with open('dict.txt') as f:
    d = {a: b for line in f for a,b in line.split()}

with open('outfile.txt') as out, open('infile.txt') as infile:
    for line in infile:
        line = line.split()
        line = [d[word] if word in d else word for word in line]
        out.write(' '.join(line))

你的大问题是没有正确使用split。我没有测试过这段代码,所以可能需要进行一些调整,具体取决于文件的格式。