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

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

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', [...], [...], [...]]]]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 正则 中文英文,php 验证只能输入汉字、英语、数字的正则表达式

收藏了正则表达式。可以验证只能输入数字、汉字、英语。分开验证了也可以整合一起验证。但是我是拆分开好了。比较好使。可以单独的验证。经过本人测试可以使用的哦!下面就是php 验证只能输入汉字、英语、数字的代码了if(preg_match(/^[0-9]$/,$str)){echo 值能输入…

卫星发现,这里用十年逆转了千年!

以下内容影像、地形以及气象数据都来自卫星观测记录我们与这个星球如何共处并解决自身的发展问题这是我们的星球这也是我们的星球地球表面的气体流动被卫星和超级计算机所感知它们带来降雨或干旱富饶或贫瘠改变着一块又一块土地一群又一群人一个又一个时代亚洲大陆西南从印度洋…

三.SQL语句实例

1.查询A表中存在而B表中不存在的数据 1.1 描述:表A中有一tel字段,表B中有一tel字段,两个字段存储的内容部分相同,现要查询A表tel字段中有而B表tel字段中没有的数据 1.2 有三个select关键字的查询语句 select tel from A where A.t…

python实现rpc框架_使用Python实现RPC框架

前言本文将会使用Python实现一个最简单的RPC框架,玩具向,不具有实用意义,但可以让你清醒的理解RPC框架的几个组成部分,只是比看Python自带的xmlrpc清晰。本文需要一点Python socket基础。如果你对Python Socket基础方面的内容不是…

php根据分类生成网址,PHP实现无限极分类生成分类树的方法

本文实例讲述了PHP实现无限极分类生成分类树的方法。分享给大家供大家参考,具体如下:现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就…

张亚勤:新范式、新架构和新模态突破传统算力,推动物理世界走向数字化

本文转自联想创投近日,在联想创投2020 CEO年会上,清华大学讲席教授、智能产业研究院院长、美国艺术与科学院院士、百度前总裁张亚勤先生带来了《未来科技趋势展望》。张亚勤表示,数字化的3.0时期已经到来,数字化的范围已从内容、社…

python魔法函数和装饰器_python魔法方法、构造函数、序列与映射、迭代器、生成器...

在Python中,所有以__双下划线包起来的方法,都统称为"魔术方法"。比如我们接触最多的__init__,魔法方法也就是具有特殊功能的方法。构造函数构造函数不同于普通方法,将在对象创建后自动调用它们。也就是在对象创建完成后…

javascript读取php,PHP如何读取由JavaScript设置的Cookie

cookie在开发中使用的非常多,但如果是使用JavaScript设置cookie然后使用PHP读取出来如何实现呢?即PHP与JavaScript下Cookie的交互使用是否可行呢?// 读取JavaScript设置的cookieheader("Content-type: text/html; charsetutf-8");i…

pycharm 无法import PIL

ubuntu 16.04 pycharm 中使用PIL,pyhon3版本报错:no module 备注:系统已安装PIL,在终端可以import 成功 解决: pycharm中在File -> Settings ->Project ->Project Interpreter ->Packge -> &#xff0…

【华为出品】智能体白皮书2020(附全文下载)

来源 | 华为、IDC、中国信通院等微信编辑 | 邱峰、罗兵微信审核 | 张祥、吴斌、数字理政究院、中通协大数据分会IDC、中国信息化百人会、中国信息通信研究院、中国人工智能产业发展联盟与华为联合编撰的《智能体白皮书》指出,在第四次工业革命爆发前的历史拐点&…

python生成配置文件config_Python configparser模块封装及构造配置文件

1.configparser模块简介使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParserconfigParser解析的配置文件的格式比较象in…

吴恩达【深度学习工程师】 04.卷积神经网络 第四周特殊应用(2)神经风格转换...

该笔记介绍的是《卷积神经网络》系列第四周:特殊应用(2)神经风格转换 主要内容有: 1.神经风格转换 2.卷积网络隐藏单元可视化显示 3.神经风格转换代价函数 4.内容代价函数 5.风格代价函数 *6.数据从一维到三维的推广 神经风格转换 把C(conten…

php grepmatch,linux最快的文本搜索神器ripgrep(grep的最好代替者)

前言说到文本搜索工具,大家一定会知道 grep, 它是 linux 最有用并最常用的工具之一。但如果要再一个大的工程项目中搜索某个关键词,大家也一定知道它比较耗时。所以就有了很多替代工具,之前最出名的是 Ack,Ag而最近又有了新的替代…

蒲慕明:《大脑之美》序言,脑探索的起点

来源:神经现实本文经授权摘自《大脑之美》序言作者:蒲慕明现代神经科学起源于十九世纪末期;圣地亚哥拉蒙-卡哈尔(Santiago Ramn y)的神经解剖学研究和他提出的神经元理论是主要的起点。一百多年来,神经科学…

pycharm python 模板配置_pycharm设置python脚本模板

PyCharmPyCharm是一个有名的Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以…

slow log php,善用php-fpm的慢执行日志slow log,分析php性能问题

众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题。作为mysql的好搭档,php也有这样的功能。如果你使用php-fpm来管理php的话,你可以通过如下选项开启。PHP 5.3.3 之前设置如下&#…

04-numpy-笔记-transpose

借鉴代码https://blog.csdn.net/xiongchengluo1129/article/details/79017142 吐槽一下CSDN的垃圾广告。。 这是转置,所以1维(向量)和2维(矩阵)的转置的意义很直观,就是数学上学的。 难的就是超过三维的张量…

量子信息技术研究现状与未来——郭光灿

来源: 中国科学杂志社量子信息技术是量子力学与信息科学融合的新兴交叉学科, 它的诞生标志着人类社会将从经典技术迈进到量子技术的新时代, 本文将阐述量子信息技术的研究现状与未来. 文中描绘了量子技术发展远景, 即筑建各种类型的量子网络, 包括量子云计算网络、分…

springboot需要tomcat服务器吗_嵌入式 Tomcat AJP 协议对 SpringBoot 应用的影响

前言2020 年 1 月 6 日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的 Apache Tomcat 文件包含漏洞。Tomcat AJP 协议由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器 webapp 下…

php session 前缀,PHP文件包含--session

利用条件:session文件路径已知,且其中内容部分可控。php的session文件的保存路径可以在phpinfo的session.save_path看到。session 的文件名格式为 sess_[phpsessid],而 sessionid 在发送的请求的 cookie 字段中也可以看到。实例:“…