我有一个这种形式的变量字典:
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
答案 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')