我有一个解析器函数,它返回iter(iter(tree))。
parsedSentence = parser.raw_parse_sents([sentence],False) 如何将parsedSentence类型转换为list (树)并访问该列表的第一个元素。
我已经尝试过list(parser.raw_parse_sents([sentence],False)),但它没有将结果转换为list。
编辑:
s1 = parsedSentence[0]
t1 = Tree.convert(s1)
positions = t1.treepositions()在这里,它抛出一个错误:
'listiterator' object has no attribute 'treepositions'谢谢。
发布于 2015-10-06 15:08:58
对于在可迭代对象上使用iter的时间,您可以通过调用list函数将其转换为list,这并没有任何区别。
>>> l =[6, 3, 5, 1, 4, 2]
>>> list(iter(iter(iter(iter(l)))))
[6, 3, 5, 1, 4, 2]但是,如果您只想获得第一个项,您就不需要使用list函数,只需在迭代器上使用next方法或next()内建函数(在python3.x中,只需使用内置函数next())即可获得第一项:
>>> iter(iter(l)).next()
6
>>> iter(iter(iter(l))).next()
6
>>> iter(iter(iter(iter(l)))).next()
6现在,关于您的问题,如果在调用list之后没有得到一个list,那么它肯定不是一个迭代器,而是另一种对象类型,您需要根据它的__getitem__方法的实现方式来获取它的项。
基于您的编辑,t1是一个列表迭代器对象,没有属性treepositions,您可以遍历它的项,然后调用这些treepositions属性:
s1 = parsedSentence[0]
t1 = Tree.convert(s1)
positions = [item.treepositions() for item in t1]发布于 2015-10-06 16:14:00
最后,通过改变
parser.raw_parse_sents([sentence],False) 至
parser.raw_parse(sentence) 感谢每一个贡献自己时间的人。
https://stackoverflow.com/questions/32973119
复制相似问题