如何使用字典从一个文件翻译到另一个文件?

时间:2015-03-27 11:45:43

标签: python

我有一个这种形式的变量字典: dictionary = {'hello':hola', 'good night':'buenos nochas'}

我的问题是,如何使用这个字典从一个文件翻译到另一个文件,我的输入是英文文件?

我知道使用键和值,但我的输出不是我想的那样。如果这个单词在build_dictionary中,我的代码会翻译它们中间的一些单词。

代码:

dictionary_words = open("dict.txt" , "r").readlines()

x = []
t = []
for line in dictionary_words:
    words= line.split()
    x.append(besede[0])
    t.append(besede[1])
build_dictionary = dict(zip(x,t))

text = open('text.txt', mode = 'r').read()

for key in build_dictionary.keys():
    text = build_dictionary.replace(key,slovar[key])

output = open('translation.txt', mode = 'w')
output.write(text)
output.close

2 个答案:

答案 0 :(得分:0)

假设你的build_dictionary类似于d = {"今天":" dia"}尝试使用re.sub

import re
pattern = '\b%s\b'

for key in d.keys():
    text = re.sub(pattern % key, d[key], text)

我的测试:

In [49]: text = "today, day"

In [50]: for key in d.keys():
   ....:     text = re.sub(pattern % key, d[key], text)
   ....:     

In [51]: text
Out[51]: 'today, dia'

答案 1 :(得分:0)

所以,你使用字典的方式似乎有点偏离。当您进行翻译时,您将循环键,然后进行替换。 python类型的名称是字典...所以为什么不这样使用呢?

例如,您构建的字典是:

的映射
{'untranslated_word' : 'translated_word'}

从那里开始my_dictionary['untranslated_word'],它将返回translated_word。那么,你只想循环遍历每个单词,然后做到这一点吗?

另外,为防止未知单词的例外情况,您可以执行my_dictionary.get(word, 'UNKNOWN_WORD')。对于字典中没有的任何值,这将返回UNKNOWN_WORD

这是执行上述操作的(未经测试的)代码段;希望它能让你走上正轨:

dictionary = {}
with open('dict.txt', 'r') as file:
    for line in file:
        split_line = line.split()
        dictionary[split_line[0]] = split_line[1]

with open('input_file.txt', 'r') as input_file:
    with open('output_file.txt', 'w') as output_file:
        for line in input_file:
            for word in line.split():
                output_file.write(dictionary.get(word.lower(), 'UNKNOWN_WORD'))
                output_file.write(' ')
            output_file.write('\n')