読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Photography #Movie #Traveling #Mac #iPhone #Running

英語⇔日本語を変換できるPythonスクリプト

English Python

ジーニアス英和辞典第5版

ジーニアス英和辞典第5版

目次

はじめに

急にPythonで英語と日本語の単語を

変換するツールが欲しくなったので、

作りました。

 

英語⇔日本語を変換できるPythonスクリプト

下記の記事を参考にしました。

 

上記のコードを改良し、

translate関数の引数を

英語 or 日本語に自動判定して、

自動的にもう一方の単語に変換するようにしました。

Web APIを使うためインターネットに繋がっている必要があります。

#! /usr/bin/python 
# -*- coding: utf-8 -*- 

import urllib2, json, sys
import unicodedata

def translate(phrase):
    # Glosbe API により、引数に与えられた単語の翻訳を取得  

    if is_japanese(phrase):
        from_lang = u"ja"# English   
        dest_lang = u"en"# Japanese 
    else:
        from_lang = u"en"# English   
        dest_lang = u"ja"# Japanese 

    url = u"https://glosbe.com/gapi/translate?from=" \
        + from_lang + u"&dest=" + dest_lang \
        + u"&format=json&phrase=" + phrase + u"&pretty=true"
    response = urllib2.urlopen(url.encode("utf-8"))
    json_data = response.read()
    json_dict = json.loads(json_data)

    return_txt = "" # これを返り値にする 
    tuc = json_dict["tuc"]# tuc: list   
    for i in range(len(tuc)):
        if u"phrase" in tuc[i].keys():
            return_txt += tuc[i]["phrase"]["text"] + ","  
    return return_txt

def is_japanese(string):
    for ch in string:
        name = unicodedata.name(ch) 
        if "CJK UNIFIED" in name \
        or "HIRAGANA" in name \
        or "KATAKANA" in name:
            return True
    return False

# Main関数 
if __name__ == '__main__':
    # コマンドライン引数を取得 (sysをimportしておく必要あり) 
    argvs = sys.argv
    argc = len(argvs)

    if argc == 2:
        # 使用法が守られていた場合、コマンドライン引数の値をphraseに代入  
        phrase=sys.argv[1].decode('utf-8')
    else:
        # 使い方を教える                                                 
        print "Usage: python translate.py 'word'"
        phrase = ""
    if phrase:
        phrase_jp = translate(phrase)
        if phrase_jp:# 翻訳が見つかった場合  
            print phrase_jp
        else:# 翻訳が見つからなかった場合 
            print "Not Found. "

 

上記のスクリプトを使うと、

日本語を引数から入力すると、

対応する英語が出力され、

f:id:meison_amsl:20160516223842p:plain

その逆も問題なく実行されます。

f:id:meison_amsl:20160516223904p:plain

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

ジーニアス英和辞典第5版

ジーニアス英和辞典第5版