我有一个树结构文件,其中括号用于表示树.这是将代码转换为

python嵌套列表的代码

def foo(s):

def foo_helper(level=0):

try:

token = next(tokens)

except StopIteration:

if level != 0:

raise Exception('missing closing paren')

else:

return []

if token == ')':

if level == 0:

raise Exception('missing opening paren')

else:

return []

elif token == '(':

return [foo_helper(level+1)] + foo_helper(level)

else:

return [token] + foo_helper(level)

tokens = iter(s)

return foo_helper()

当字符长度为1时,它工作正常.对于单词或句子,同样不适当的工作.

我的树样本是:

( Satellite (span 69 74) (rel2par Elaboration)

( Nucleus (span 69 72) (rel2par span)

( Nucleus (span 69 70) (rel2par span)

( Nucleus (leaf 69) (rel2par span) (text _!MERRILL LYNCH READY ASSETS TRUST :_!) )

( Satellite (leaf 70) (rel2par Elaboration) (text _!8.65 % ._!) )

)

( Satellite (span 71 72) (rel2par Elaboration)

( Nucleus (leaf 71) (rel2par span) (text _!Annualized average rate of return_!) )

( Satellite (leaf 72) (rel2par Temporal) (text _!after expenses for the past 30 days ;_!) )

)

)

( Satellite (span 73 74) (rel2par Elaboration)

( Nucleus (leaf 73) (rel2par span) (text _!not a forecast_!) )

( Satellite (leaf 74) (rel2par Elaboration) (text _!of future returns ._!) )

)

)

在这里,输出需要

[‘satellite’,[‘span’,’69’,’74’] ………]但是给定的函数我得到的是[‘s’,’a’,’t’. ………….. [ ‘S’, ‘p’, ‘A’, ‘N’, ‘7’, ‘3’] ……….. …]

怎么修改?

最佳答案 我以为你想用_!来表示带空格的字符串.然后我使用正则表达式拆分表达式:

from re import compile

resexp = compile(r'([()]|_!)')

tokens = iter(resexp.split(s))

我的结果是(使用深度= 4的pprint)

$python lispparse.py | head

['\n',

[' Satellite ',

['span 69 74'],

' ',

['rel2par Elaboration'],

'\n ',

[' Nucleus ',

['span 69 72'],

' ',

['rel2par span'],

我进一步改进了它:

tokens = iter(filter(None, (i.strip() for i in resexp.split(s))))

得到了:

$python lispparse.py

[['Satellite',

['span 69 74'],

['rel2par Elaboration'],

['Nucleus',

['span 69 72'],

['rel2par span'],

['Nucleus', [...], [...], [...], [...]],

['Satellite', [...], [...], [...], [...]]],

['Satellite',

['span 73 74'],

['rel2par Elaboration'],

['Nucleus', [...], [...], [...]],

['Satellite', [...], [...], [...]]]]]

python嵌套列表法实现树_python – 将嵌套的括号树转换为嵌套列表相关推荐

  1. python构建huffman树_python:哈夫曼树,PythonHuffuman

    Python:Huffuman树 题目 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列 ...

  2. python基础语法 第3关_Python基础语法 第3节课 (列表)

    [ ]列表 一.列表可以存放的内容 1.列表可以存放哪些类型? 列表是一个大仓库,百宝箱,所学过的所有类型,都可以放在列表里面. my_list = [1,2,3,(2,'polo'),6,'hell ...

  3. python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典

    Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面 ...

  4. python查表法是什么_python查表法提取骨骼线经历

    首先根据这篇博文https://www.cnblogs.com/xianglan/archive/2011/01/01/1923779.html,自己重新编写python代码,由于出现局部错误,导致出 ...

  5. python列表最多有多少元素_Python中包含一百万个元素的列表会占用多少...

    这取决于你的Python版本和你的系统,但我会帮你弄清楚它需要多少内存.首先,sys.getsizeof只返回表示容器的对象的内存使用,而不是容器中的所有元素. Only the memory con ...

  6. 用python穷举法判断素数_Python如何判断素数

    判断一个给定的正整数是否素数 输入格式: 输入在第一行给出一个正整数n(≤ 10),随后n行,每行给出一个小于1000000 的需要判断的正整数 输出格式: 对每个需要判断的正整数,如果它是素数,则在 ...

  7. python中turtle画树_python中turtle可以画树吗?怎么画?

    这几天给大家介绍的画图形的方法很多,小编就想着有没有难一点的可以挑战一下.经过一番搜集资料,还真的被小编找到了.当然代码会比较长,小伙伴们学习的时候要有耐心,不要出现手滑的现象,不然对着代码一点点找失 ...

  8. python 圆括号和方括号一样吗_Python中用方括号和圆括号括起来的列表有什么区别?...

    方括号是lists,而圆括号是tuples. 列表是可变的,这意味着您可以更改其内容:>>> x = [1,2] >>> x.append(3) >>& ...

  9. python穷举法搬砖_python 穷举法 算24点(史上最简短代码)-阿里云开发者社区

    # 作者:hhh5460 # 时间:2017年6月3日 import itertools deftwentyfour(cards): '''史上最短计算24点代码''' for nums in ite ...

  10. python excel文件转换成字符串_python利用pandas将excel文件转换为txt文件的方法

    python将数据换为txt的方法有很多,可以用xlrd库实现.本人比较懒,不想按太多用的少的插件,利用已有库pandas将excel文件转换为txt文件. 直接上代码: ''' function:将 ...

最新文章

  1. c++ 重载 重写_Java | 深入理解方法调用的本质(含重载与重写区别)
  2. 2010年最火与最冷的IT职业
  3. form表单刷新_《大胖 ? 小课》- 不用 js 实现文件无刷新上传
  4. 疫情影响海外净利润?海尔智家的回答出人意料
  5. django model filter_django中探索如何提高查询数据效率
  6. linux网卡驱动 pdf,Linux下网卡驱动程序.pdf
  7. python下载邮件附件_Python - 从电子邮件附件下载excel文件然后解析它
  8. z-index在IE中的迷惑
  9. 2017.3.25 圆桌聚餐 思考记录
  10. jQuery的Select操作集合
  11. Idea 集成Lombok插件
  12. 概率就是个冷冰冰的坑
  13. Abaqus2020帮助文件无法搜索问题
  14. css画横线箭头_如何用纯CSS实现的箭头的效果?
  15. zblog怎么定位html代码,zblog模板修改常用调用标签代码
  16. Contrastive Adaptation Network for Unsupervised Domain Adaptation
  17. Express高效查询纯真IP库插件lib-qqwry
  18. 相爱容易相守难,盘点那些摔倒在奔跑途中的创业公司
  19. 利用 IP 扩展访问列表实现应用服务的访问限制
  20. 百家号素材审核规范说明

热门文章

  1. LeetCode 870. 优势洗牌(贪心 二分查找)
  2. LeetCode 216. 组合总和 III(排列组合 回溯)
  3. randn函数加噪声_语义分割中常用的损失函数1(基础篇)
  4. 爬虫案列:京东商城长裤信息获取
  5. centos6.5装mysql好难_CentOS6.5 下MySQL傻瓜式安装
  6. python中的列表和元组_百度资讯搜索_python中的列表和元组
  7. 论文浅尝 | Data Intelligence第4期正式上线啦
  8. 论文浅尝 | 提取计数量词丰富知识库
  9. 领域应用 | 智能导购?你只看到了阿里知识图谱冰山一角
  10. python中mysql更新字段中传参问题