我在这里看了很多例子,但我无法弄清楚发生了什么。任何帮助表示赞赏。
我有一个文本文件,我希望通过字典将数字翻译成单词。
由于文本文件太长,我只是给出一个简短的样本。 文本文件:
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替换一行,用另一个替换下一行。我会尝试做更多的研究。
再次感谢。答案 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
。我没有测试过这段代码,所以可能需要进行一些调整,具体取决于文件的格式。