擅长:python、mysql、java
<p>我看不到任何列表——我只看到字符串,它们是不可变的,不使用字典。</p>
<p>所以核心功能可以是:</p>
<pre><code>def translate(sentence, transdict):
words = sentence.split()
trans = [transdict.get(w.lower(),w) for w in words]
print(' '.join(trans))
</code></pre>
<p><code>split</code>将句子变成一个空格分隔的单词列表;然后列表理解将其变成一个翻译单词列表(如果单词不在词典中,则将其单独留下);最后,我们将后一个列表重新合并成一个空格分隔的句子。</p>
<p>当然,这还有很多需要改进的地方,但是没有正则表达式是很难做得更好的——而且如果你使用词典仅仅一天的话,正则表达式可能远远超出了你的研究范围。如果他们没有:</p>
<pre><code>import re
def maketrans(somedict):
def trans(mo):
word = mo.group()
return somedict.get(word.lower(), word)
return trans
</code></pre>
<p>然后</p>
<pre><code>translated = re.sub(r'\w+', maketrans(right_dict), sentence)
print (translated)
</code></pre>
<p>将保留标点和间距。但是,在RE函数和高阶函数之间,我想您最好在稍后的Python研究中忽略这个函数:-)。</p>