おそらく以下の記事の方法のほうが簡単です(追記、2013年11月9日)
knpを使ってみようと思ったのですが,呼び出すときにknpとjumanをパイプでつながないといけません.
subprocess の勉強も兼ねてやってみました.close しないと次のコマンドが始まらないのがわかるまで時間がかかりました.
もっとよい書き方がありそうですね.
環境によって動かないみたいなので,どこかが間違ってるみたい.パイプでつなぐとうまくいかない……
一応単純に subprocess.call('echo 解析する文字列 | nkf -e | juman | knp -tab > 出力先のファイル名', shell = True) みたいにやれば動きます。
import subprocess def knp(str): juman = subprocess.Popen(["juman"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True) knp = subprocess.Popen(["knp", "-tab"], stdin=juman.stdout, stdout=subprocess.PIPE, shell=True) juman.stdin.write(str.encode("cp932")) juman.stdin.close() juman.stdout.close() return knp.communicate()[0] def main(): print knp(u"貴社の記者が汽車で帰社した") if __name__ == '__main__': main() raw_input()