2012年3月30日金曜日

Pythonにおける絵文字の処理

まだまだ格闘中ですが、すこしずつ前進している気がする…

現在利用を考えているライブラリは
emoji-python

でもこの2つの最高の材料を組み合わせるのが難しい。
まず、docomoの絵文字を使ってテスト
u'\ue6ec'
でこいつを
emoji-pythonに変換してもらおうとすると

UnicodeEncodeError: 'ascii' codec can't encode character u'\ue6ec' in position 0: ordinal not in range(128)

と、エラーを吐いちゃう。
ドキュメントを読むとUTF8で渡せと書いてある。
あー、そうか!DjangoではまだUnicodeで持ってるから明示的にUTF8に変換しないといけないのか!

というわけで、正解は
Python 2.7.2 (default, Mar 19 2012, 14:48:20)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import emoji
>>> obj = emoji.factory('docomo', 'utf-8')
>>> obj.convert(u'\ue6ec'.encode('utf-8'))
'[d136]'
こうでした。

0 件のコメント:

コメントを投稿