月別アーカイブ: 1月 2013 - ページ 3

コンソールから整形されたJSONを表示

Linuxから手軽にJSON文字列を整形してコンソールに出力してくれるコマンドがあったのでご紹介。
echo '{"json":"obj"}' | python -mjson.toolCode language: PHP (php)
echoの部分は、catでやればjsonファイルをそのまま読み込むこともできます。 参考: http://docs.python.jp/2.6/library/json.html

Pythonでエスケープとアンエスケープを行う

Escape Unescape

s = unicode(raw_input(), "utf-8").encode('unicode_escape')
print s
print s.decode('unicode_escape')Code language: PHP (php)
これでいけた。Python3からは文字コード周りがすごい修正かかってるらしいんだけども、これがあれば問題ない気がする。raw_inputのところをリテラルに変えてもいいし、エラーも吐かずいい仕事してくれる。

ただ改行コードが・・

しかし改行コードまではエスケープしてくれない。しかも先頭の\\が消えるときがある。

追記

import cgi
cgi.escape("ほげほげ");Code language: JavaScript (javascript)
こんなのもあった。

PythonでMeCab実行時に文字化けを治す

文字化けの原因

文字化けの原因はどうやら一緒にインストールした辞書が原因らしい。UTF-8としてmakeしたはずなのになぜかeuc-8になってしまうらしく。これもまた混乱の原因になってしまうようです。

辞書の変更

sudo update-alternatives –config mecab-dictionary

とすることで辞書を変更できるようですが、これでutf-8を指定してるのにも関わらず文字化けする始末。どうしてなんだろうと調べてみると原因は全く関係ないところにありました。

mecabrcファイルを探す

find / -name *mecabrc*

mecabrcファイルにdecDirというディクショナリのディレクトリを指定する変数があるのでこれをutf-8対応のものに書き換えます。ややこしい・・。

/usr/local/etc/mecabrc
/etc/mecabrc

自分の環境だと2つでてきたのでこれらをviで開いてdecdirを書き換え。
書き換える元の辞書のファイルパスがわからない場合は、

find / -name *ipadic-utf8*

で探します。

/var/lib/mecab/dic/ipadic-utf8

こんなかんじになってるのがだいたい正解です。