加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:46:06 所属栏目:Python 来源:网络整理
导读:我有一个解析器函数,它返回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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读