言語の翻訳プログラム

辞書はPythonの中でも重要なものの1つであり、多くのプログラムを書く際に、その手間を大きく軽減する。例えば、以下に示すコードのような言語プログラム(翻訳結果はひどい出来だが)を書くのに辞書が用いられる。

■コード
EtoF={'bread':'pain','wine':'vin','with':'avec','I':'Je','eat':'mange','drink':'bois','John':'Jean','friends':'amis','and':'et','of':'du','red':'rouge'}

FtoE={'pain':'bread','vin':'wine','avec':'with','Je':'I','mange':'eat','bois':'drink','Jean':'John','amis':'friends','et':'and','du':'of','rouge':'red'}

dicts={'English to French':EtoF,'French to English':FtoE}

def translateWord(word,dictionary):

    if word in dictionary.keys():

        return dictionary[word]

    elif word != '':

        return '"'+word+'"'

    return word

def translate(phrase,dicts,direction):

    UCLetters='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

    LCLetters='abcdefghijklmnopqrstuvwxyz'

    letters=UCLetters+LCLetters

    dictionary=dicts[direction]

    translation=''

    word=''

    for c in phrase:

        if c in letters:

            word=word+c

        else:

            translation=translation\

                        +translateWord(word,dictionary)+c

            word=''

    return translation+''+translateWord(word,dictionary)

print(translate('I drink good red wine, and eat bread.',dicts,'English to French'))

print(translate('Je bois du vin rouge.',dicts,'French to English'))

■出力
Je bois "good" rouge vin, et mange pain.
I drink of wine red.


この記事が気に入ったらサポートをしてみませんか?