TypeError:需要一个类似字节的对象,对于Geniatagger不是'str'吗?

时间:2019-09-02 13:15:37

标签: python-3.x typeerror

我正在尝试使用geniatagger在python中执行分块,这需要使用git clone下载。

按照here的说明,我下载并安装了geniatagger并导入了我的应用程序。

但是,当我尝试访问解析功能时,出现以下错误。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-25-867eea8ac07f> in <module>
      1 my_bytes = "This is a pen.".encode()
      2 print(type(my_bytes))
----> 3 x = tagger.parse(my_bytes)

~/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/geniatagger_python-0.1-py3.6.egg/geniatagger.py in parse(self, text)
     33         results = list()
     34 
---> 35         for oneline in text.split('\n'):
     36             self._tagger.stdin.write(oneline+'\n')
     37             while True:

TypeError: a bytes-like object is required, not 'str'

这是我尝试过的代码。

tagger = GeniaTagger('./geniatagger/geniatagger')
# option1: my_bytes = "This is a pen.".encode()
# option2: my_bytes = b"This is a pen."
# option3: my_bytes = bytes("This is a pen.")
my_bytes = "This is a pen.".encode('utf8')
print(type(my_bytes))
x = tagger.parse(my_bytes)

当前,我得到上述错误作为输出。从技术上讲,这应该是输出。

>>> print tagger.parse('This is a pen.')
[('This', 'This', 'DT', 'B-NP', 'O'), ('is', 'be', 'VBZ', 'B-VP', 'O'), ('a', 'a', 'DT', 'B-NP', 'O'), ('pen', 'pen', 'NN', 'I-NP', 'O'), ('.', '.', '.', 'O', 'O')]

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

似乎代码不完全Python 3兼容。

您传入了一个编码为字节的字符串,但是在line 35for oneline in text.split('\n'))上,变量text的类型为字节,但是变量.split()({{1 }})是一个字符串。这会导致错误。

您可以像这样在解释器中重现错误:

'\n'

您可以尝试在>>> 'asdasd'.encode().split('d') Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: a bytes-like object is required, not 'str' 中输入字符串而不是字节,但是不知道这样是否可行。