python 大括号嵌套,分析嵌套的大括号/方括号组
我试图分析如下所示的文件:MSH
[ PD1 ]
[{ ROL }]
[
{ ROL }
]
[
{
PR1
[{ ROL }]
}
]
[
{
IN1
[ IN2 ]
[{ IN3 }]
}
]
[ ACC ]
其中:3个字母数字代表一个段
[段]表示可选段
{SEGMENT}表示重复段
[{SEGMENT}]表示可选的重复段
以上任何段外形都可以在嵌套中组合在一起
可选([])和/或重复({})组。在
嵌套重复组的例子是上面代码中的第4-19行。在
理想的结果是这样的:
^{pr2}$
我已经阅读了SO和pyparsing wiki上的大多数pyparsing文章,包括四个fn.py示例和regexinverter。我相信我需要使用Infixnotation,但我不太明白如何使用它。在
到目前为止,我得到的是:lbrack = pp.Literal("[")
rbrack = pp.Literal("]")
lbrace = pp.Literal("{")
rbrace = pp.Literal("}")
segment = pp.Word(pp.alphanums,exact=3)
optsegment = lbrack + segment + rbrack
repsegment = lbrace + segment + rbrace
optrepsegment = lbrack + lbrace + segment + rbrace + rbrack
segments = (segment.setResultsName("RawSegment") |
optsegment.setResultsName("OptionalSegment") |
repsegment.setResultsName("RepeatingSegment") |
optrepsegment.setResultsName("OptionalRepeatingSegment"))
opt_group = pp.Group(lbrack + segments + rbrack)
rep_group = pp.Group(lbrace + segments + rbrace)
message = pp.Group(segments | opt_group | rep_group)
expr = pp.infixNotation(message,
[
('[', 2, pp.opAssoc.LEFT),
('{', 2, pp.opAssoc.LEFT),
('}', 1, pp.opAssoc.RIGHT),
(']', 1, pp.opAssoc.RIGHT),
])
msg = message.searchString(data)
for item in msg:
print(item)
我还没有敲出输出格式,我只是想在这一点上正确解析输出。在
python 大括号嵌套,分析嵌套的大括号/方括号组相关推荐
- 孤荷凌寒自学python第六天 列表的嵌套与列表的主要方法
孤荷凌寒自学python第六天 列表的嵌套与列表的主要方法 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) (同步的语音笔记朗读:https://www.ximalaya.com/keji/1 ...
- python读取json格式文件大量数据,以及python字典和列表嵌套用法详解
1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...
- python函数中的嵌套函数
python函数中的嵌套函数 学习Python,请记住"在Python中一切皆是对象",当然函数本身也是对象 Python中一切皆是对象 这恐怕是学习Python最有用的一句话.想 ...
- Python中的If嵌套讲解(语法、实例、执行流程)
If就是if条件语句,嵌套的意思可以理解为在生活当中有种玩具叫做俄罗斯套娃,这个套娃呢就是大的套娃里面有小的娃,小娃里面有更小的娃,就这样一层一层的套下去.在编程语言当中,if嵌套指代的意思是一个大的 ...
- python基础之函数嵌套定义
博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏. ...
- 44. python的for循环嵌套
44. python的for循环嵌套 文章目录 44. python的for循环嵌套 1. 什么是嵌套 2. for循环中嵌套有if条件判断语句 2.1 先创建一个奇数序列 2.2 判断一个数是否能被 ...
- #for循环嵌套分析
标题:for循环嵌套分析
- qt布局嵌套_QDockWidget嵌套布局详解-实现Visual Studio布局
概述 许多工程软件,如Qt Creator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口. Qt的嵌套布局由QDockWidget完成,用Qt Creator拖 ...
- python文本字符分析、编写程序接收字符串_python 文本分析Python编程中字符串和列表的基本知识讲解...
Python 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var ...
- python可视化来分析全国疫情
很长一段时间在python下出图都是使用matplotlib,其好处就是应用比较广泛,文档很容易找,不过出的图微显丑陋.pyecharts 是百度的echarts基于python的实现,可以很方便的直 ...
最新文章
- python3笔记_python3基础笔记(一)
- WF4.0实战(一):文件审批流程
- HDU1559(二维树状数组)
- 某央企程序员炫耀:央企研发岗才是性价比天花板!955,不卷不裁,6险2金,500元单身公寓!...
- SFC扫描恢复系统文件
- IDEA报错Web server failed to start. Port 8080 was already in use的解决方法
- 自由自在意式手工冰淇淋的清凉之风已“冰”临城下
- 一 Struts2 开发流程
- SIGIR 2021 | 推荐系统中的自监督图表征学习
- 设计模式C++实现 ——观察者模式
- JQuery Datatables 显示行的附加信息
- rhce考试试题以及答案_搞懂这套五年级数学上册期末考试试题(含答案),考试不担心...
- 将字符串中的小写字母转换成大写字母 (信息学奥赛一本通-T1138)
- 黑猫警长 stl_如何使用当地警长保护您的信息
- linux mysql 主从数据库_Linux下安装MySQL及MySQL主从同步配置
- linux的functions之killproc函数详解
- limit mongodb 聚合_mongodb-$type、limit、skip、sort方法、索引、聚合
- java classpath 理解
- 赶紧收藏!不可多得的Instagram运营技巧
- 【算法竞赛学习笔记】弦图和区间图
热门文章
- 抽取MySQL数据成文件_MySql导入和抽取大数量级文件数据
- centos7搭建单机kafka,开启SASL/PLAIN加密,并使用kafka tool 登录
- html的网页主题标记是什么,html标记是什么
- vite报错 process is not defined
- 大规模海量并发难题的本质
- Solaris环境下使用snoop命令抓包
- android 格式化sd咔_安卓手机怎么格式化内存(sd卡)?安卓手机格式化方法大全
- 任正非:华为要做追上特斯拉的大乌龟
- noob_Noob的Three.js指南
- Asis CTF 2016 b00ks