所以我开始研究这个小翻译程序,通过输入将英语翻译成德语。但是,当我输入多个单词时,我会输入我输入的单词,然后输入正确的单词。
这是我到目前为止所做的:
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很新,所以非常感谢任何帮助
答案 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
dictionary
和input
来检查单词。请按照以下代码中的注释进行操作:
split()
输出:
input
例如,如果你有3个单词loop
,这也会失败,但如果你只有两个单词,那么它应该没问题。