Parsing 如何将var传递到Python的MeCab中?

Parsing 如何将var传递到Python的MeCab中?,parsing,unicode,module,python-2.7,mecab,Parsing,Unicode,Module,Python 2.7,Mecab,代码是: import MeCab m = MeCab.Tagger("-O wakati") text = raw_input("Enter Japanese here: ") print m.parse(text) 问题在于,在将字符串输入到原始_输入后,它会在IDLE中给出一个错误: Traceback (most recent call last): File "C:\Users\---\Desktop\---\Python\japanesetest.py", line 5, i

代码是:

import MeCab

m = MeCab.Tagger("-O wakati")
text = raw_input("Enter Japanese here: ")
print m.parse(text)
问题在于,在将字符串输入到原始_输入后,它会在IDLE中给出一个错误:

Traceback (most recent call last):
  File "C:\Users\---\Desktop\---\Python\japanesetest.py", line 5, in <module>
    print m.parse(text)
  File "C:\Users\---\Desktop\---\Python\lib\site-packages\MeCab.py", line 220...
    def parse(self, *args): return _MeCab.Tagger_parse(self, *args)
TypeError: in method 'Tagger_parse', argument 2 of type 'char const *'
我得到了正确的结果:

なるほど 、 マルコフ 辞書 の キー は タプル に し た ほう が スッキリ し ます ね 。

我尝试过的方法是在开始时使用unicode标记,用unicode写入文本文件并解析文本,以及其他数百万种方法。我正在运行Python2.7和Mecab0.98。如果这不能成为答案,即使是对错误的一点了解也将不胜感激

这是我目前的解决方法,应该可以帮助遇到相同问题的人:

import MeCab
import codecs

write_to = codecs.open("pholder.txt", "w", "utf-8")
text = raw_input("Please insert Japanese text here: ")
write_to.write(text)
write_to.close()

read_from = open('pholder.txt').read()
mecab = MeCab.Tagger("-Owakati")
print mecab.parse(read_from)

这里的交易破坏者正在将.read()添加到open func。为什么?也许你可以告诉我/

我能够在IDLE和IPython命令行中使用Python 2.7和MeCab 0.98成功运行您的代码段

import MeCab
m = MeCab.Tagger("-O wakati")
text = raw_input("Enter Japanese here: ")
Enter Japanese here: 私の車はとても高いです。
print m.parse(text)
私 の 車 は とても 高い です 。 
但是,当从UTF文件读取时,我在尝试解析文本时会出错。对于这些情况,我显式地将文本编码为shift-jis。你可以试试这个技巧。下面是一个例子

rawtext = open("UTF.file", "rb").read()
tagger = MeCab.Tagger()
encoded_text = rawtext.encode('shift-jis', errors='ignore')
print tagger.parse(encoded_text).decode('shift-jis', errors='ignore')

这太棒了,谢谢你。它还帮助我解决了一个GUI编码问题。
rawtext = open("UTF.file", "rb").read()
tagger = MeCab.Tagger()
encoded_text = rawtext.encode('shift-jis', errors='ignore')
print tagger.parse(encoded_text).decode('shift-jis', errors='ignore')