Python翻译:我想在句子中翻译多个单词

时间:2017-06-11 17:06:06

标签: python translate

所以我开始研究这个小翻译程序,通过输入将英语翻译成德语。但是,当我输入多个单词时,我会输入我输入的单词,然后输入正确的单词。

这是我到目前为止所做的:

data = [input()]

dictionary = {'i':'ich', 'am':'bin', 'a':'ein', 'student':'schueler', 'of 
the':'der', 'german':'deutschen', 'language': 'sprache'}


from itertools import takewhile
def find_suffix(s):
    return ''.join(takewhile(str.isalpha, s[::-1]))[::-1]

for d in data:
    sfx = find_suffix(d)
    print (d.replace(sfx, dictionary.get(sfx, sfx)))

我试图获得以下输出:

"i am a student of the german sprache" 

而不是:

"ich bin ein schueler der deutschen spracher"

我对python很新,所以非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

data = [input()]

dictionary = {'i':'ich', 'am':'bin', 'a':'ein', 'student':'schueler', 'of the':'der', 'german':'deutschen', 'language': 'sprache'}

for word in data:
    if word in dictionary:
        print dictionary[word],

说明:

对于输入中的每个单词,如果您的词典中存在该单词 它将打印与该单词相关联的值,逗号(,)将跳过换行符。

答案 1 :(得分:1)

将代码更改为此应为您正在寻找的内容提供第一步。

data = raw_input()

dictionary = {'i':'ich', 'am':'bin', 'a':'ein', 'student':'schueler', 'of':'der', 'german':'deutschen', 'language': 'sprache'}



from itertools import takewhile
def find_suffix(s):
    return ''.join(takewhile(str.isalpha, s[::-1]))[::-1]


for d in data.split():
    sfx = find_suffix(d)
    print (d.replace(sfx, dictionary.get(sfx,''))),

你现在所拥有的并没有考虑每个单独的词,因为数据不是你想要的单词列表,而是一个包含一个字符串的列表,即你提供的输入。尝试打印调试您的代码段,看看我在说什么。

请注意,出现此类逻辑时,会出现项目中的案例。将每个单词与其德语对应单词进行翻译会禁止长度超过1个单词的词典条目,例如'of the':'der'。出于演示目的,我选择使用长度为1的键保留字典,因此上面的键:值对变为'of':'der',这是不正确的,因为德语语法比这复杂一点。

现在你遇到的问题多于你开始时的问题,这就是玩具项目的用途。如果我是你,我会研究开源项目如何处理这些案例,并试着看看哪些适合。祝你的项目好运。

答案 2 :(得分:0)

我注意到@XmlAnyElement中有两件事。首先,你可以将两个单词翻译成一个单词(array.map中的两个单词var array = ['FLAT RATE', 'FREE SHIPPING']; var nospace_array = array.map(function(item){ return item.replace(/\s+/g,''); }) console.log(nospace_array)),另一个是input可以有不应该的德语单词被翻译。考虑到这两个条件,我认为最好的方法是key dictionaryinput来检查单词。请按照以下代码中的注释进行操作:

split()

输出:

input

例如,如果你有3个单词loop,这也会失败,但如果你只有两个单词,那么它应该没问题。