PythonでGoogle Language APIを使うときに、’がデコードされなくて困った

Google Language APIは素晴らしくて、AjaxのAPIがしっかり用意されているほか、RESTfulなAPIとして以下のようなものも使えます。

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q={文字列}&langpair={変換前言語}|{変換後言語}

さらに、珍しく日本語ガイドがあるのも良いですね。
http://code.google.com/intl/ja/apis/ajaxlanguage/documentation/

さて、このRESTfulAPIで取得する結果はJSONになっているのですが、シングルコーテーション(アポストロフィ)は' に文字参照されて帰ってきます。

Pythonは特に関係ないんですが、文字参照されたままだと色々困ります。
標準モジュールで簡単にデコードするものが見つからなかったので、http://d.hatena.ne.jp/MOOK/20100407/1270601539を使わせて頂くことにしました。

トータルでは、以下のようなコードになります。

import urllib
import json

#参照URLの実体参照解除コードを、entity_referenceモジュールにした
import entity_reference

text = urllib.quote("私はピーターです")
url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=ja|en' % text
result = json.loads(urllib.urlopen(url).read())

print entity_reference.encode(result['responseData']['translatedText'])
#I'm peter

Twitter APIなども、実体参照で返ってきたはずなので、注意が必要ですね。

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(16区分17回 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、Ruby Programmer Gold、AWSソリューションアーキテクト(アソシエイト)、日商簿記2級、漢検準1級などを保有。

babaの書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ