python-mecab とかいうのをインストールしようと思ってハマりかけたので、パットよみがなにしたかっただけということもあり、mecab コマンドをそのまま叩くことにした。
mecab はこんな感じでよみがなを取得できる(辞書にないと取れない)
$ echo "林檎" | mecab -Oyomi
リンゴ
んで、 Django のモデルから名前引っ張ってきて、よみがなに変換するスクリプトが以下。
yomigana.py
# -*- coding: utf-8 -*-
import os
import sys
import re
from subprocess import Popen, PIPE
import jcconv
from django.conf import settings
sys.path.append(os.path.abspath(os.path.dirname('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = 'hogehoge.settings'
from hogehoge.apps.fuga.models import Piyo
def get_yomigana(text):
p1 = Popen(['echo', text], stdout=PIPE)
p2 = Popen(['mecab', '-Oyomi'], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close()
output = p2.communicate()[0]
return re.sub(r'\n', '', output)
for piyo in Piyo.objects.all():
yomigana = jcconv.kata2hira(jcconv.half2hira(get_yomigana(piyo.name )))
print ','.join([str(user.id), piyo.name.encode('cp932'), yomigana.decode('utf8').encode('cp932')])
プロジェクト名とかは hogehoge にしてる。
外部コマンド叩くのは以下のマニュアルを参考にしました。
どうやら、os.system とかは廃止方向らしい (2.7)