Python – NLP – 将iter(iter(树))转换为列表(树)

我有一个解析器函数,它返回iter(iter(树)).parsedSentence = parser.raw_parse_sents([sentence],False) 如何将parsedSentence类型转换为列表(树)并访问该列表的第一个元素.我已经尝试过list(parser.raw_parse_sents([sentence],False))但

我有一个解析器函数,它返回iter(iter(树)).

parsedSentence = parser.raw_parse_sents([sentence],False)  

如何将parsedSentence类型转换为列表(树)并访问该列表的第一个元素.

我已经尝试过list(parser.raw_parse_sents([sentence],False))但是它没有将结果转换为list.

编辑:

s1 = parsedSentence[0]
t1 = Tree.convert(s1)
positions = t1.treepositions()

这里抛出一个错误:

'listiterator' object has no attribute 'treepositions'

谢谢.
最佳答案
你在可迭代对象上使用iter的次数没有任何区别,只需通过调用list函数将其转换为list即可.

>>> l =[6,3,5,1,4,2]
>>> list(iter(iter(iter(iter(l)))))
[6,2]

但是如果你只想获得第一项,你不需要使用list函数,你只需在迭代器或next()内置函数上使用next方法(在python 3.X中你可以使用内置函数) next())获取forst项:

>>> iter(iter(l)).next()
6
>>> iter(iter(iter(l))).next()
6
>>> iter(iter(iter(iter(l)))).next()
6

现在关于你的问题,如果你在调用它之后没有得到一个列表,那肯定它不是一个迭代器,它将是你需要根据其__getitem__方法的实现方式得到它的项目的另一个对象类型.

根据您的编辑,t1是一个列表迭代器对象,并且没有属性树位置,您可以循环它的项目,然后调用那些treepositions属性:

s1 = parsedSentence[0]
t1 = Tree.convert(s1)
positions = [item.treepositions() for item in t1]

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部