问题标签 [pyparsing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9154 浏览

python - 如何使用 pyparsing 解析具有多个开启器/关闭器类型的嵌套表达式?

我想使用 pyparsing 来解析形式的表达式:expr = '(gimme [some {nested [lists]}])',并取回形式的 python 列表:[[['gimme', ['some', ['nested', ['lists']]]]]]。现在我的语法看起来像这样:

nestedParens = nestedExpr('(', ')')
nestedBrackets = nestedExpr('[', ']')
nestedCurlies = nestedExpr('{', '}')
封闭 = nestedParens | 嵌套括号 | 嵌套卷曲

目前, enclosed.searchString(expr)返回表单列表:[[['gimme', ['some', '{nested', '[lists]}']]]]. 这不是我想要的,因为它无法识别方括号或大括号,但我不知道为什么。

0 投票
1 回答
904 浏览

python - 运算符的 Pyparsing 问题

我用pyparsing做了一个语法,我有一个问题。语法尝试解析搜索查询(使用运算符优先级、括号等),我需要空格像 and 运算符一样工作。

例如,这很好用:

但这失败了:

我希望第二个查询像第一个查询一样工作。

我的实际语法是:

0 投票
1 回答
783 浏览

python - pyparsing:提取包含特定文本的字符串

我正在尝试学习 pyparsing。这听起来很有希望,并且用于文本处理会很有趣。无论如何,这是我的问题:

我有一个课程名称列表。例如,

我想从上面的列表中提取与微积分有关的课程。这些课程要么包含完整的单词 CALCULUS,要么具有缩写 CALC。首先,假设这些词只以大写形式出现(在上面的例子中有一个小写的;让我们暂时忽略它)。

我写了以下代码:

我的第一个问题是,是否有更好的方法使用 pyparsing 来做到这一点?

现在上面错过了Calculus II。我知道我可以通过定义calc为:

但这会错过cAlc。有没有办法指定语法,使 CALC 中的所有小写和大写字母都匹配。

谢谢您的帮助。

0 投票
1 回答
611 浏览

pyparsing - pyparsing - 解析简单的行


我正在为如何完全解析这一行而摸不着头脑,我在使用“(4801)”部分时遇到了问题,其他所有元素都被抓住了。

这是我到目前为止所拥有的

编辑: 保罗,如果你有耐心,我将如何过滤

效率_bnf.searchString(unparsed_log_data) 和report_and_effic.searchString(unparsed_log_data) 都按预期返回数据,但如果我尝试

report_and_effic = report_bnf + partial_report_ignore + efficiency_bnf

report_and_effic.searchString(unparsed_log_data) 返回 ([], {})

EDIT2: 应该阅读代码,
partial_report_ignore = Suppress(SkipTo("Efficiency", include=True ))

0 投票
2 回答
1037 浏览

python - 将 pyparsing.ParseResults 转换回 html 字符串

我是 pyparsing 的新手。
如何将类 pyparsing.ParseResults 的实例转换回 html 字符串。

前任。

所以,我需要这个函数foo
有什么建议么 ?

0 投票
1 回答
1276 浏览

python - 解析类似 TCL 的文本

我有一个如下所示的配置文本:

这些值是纯字符串或带引号的字符串。键只是字母数字字符串。我事先知道这一点key2并且key3.subkey1.key4会持有套路,所以我可以以不同的方式对待这些路径。同样,我知道BLOBKEY它将包含一个“转义”配置部分。

目标是将其转换为如下所示的字典:

下面的代码在将其分解为一堆嵌套列表方面做得很好。

在 Python 中使用 pyparsing 获得我想要的结果的最佳方法是什么?

0 投票
2 回答
439 浏览

python - 将 pyparsing 结果与节点链表关联的模式

我已经定义了一个pyparsing规则来将此文本解析为语法树...

文本命令:

语法树:

我试图将上面语法树中的所有嵌套键值对关联到对象的链表中......层次结构看起来像这样(每个单词都是一个namedtuple......层次结构中的孩子在父母子女名单):

所有这一切的目标是构建一个通用的测试数据采集平台,以驱动针对网络设备的测试流程,并记录结果。数据采用这种格式后,将使用相同的数据结构来构建测试报告。为了回答下面评论中的问题,我选择了一个链表,因为它似乎是在编写报告时顺序出列信息的最简单方法。但是,我宁愿在完成测试之前不分配IterationObservation序列号……以防我们在进行测试的过程中发现问题并插入更多的观察。我的理论是列表中每个元素的位置就足够了,但如果它是问题的一部分,我愿意改变它。

问题是我在构建链接列表后尝试将键值分配给链接列表中的对象时迷失了方向。例如,在我将 anObservation namedtuple插入到 first之后Iteration,我无法可靠地处理assign Observation results_bool = True上面示例中的更新。

是否有通用的设计模式来处理这种情况?我已经用谷歌搜索了一段时间,但我似乎无法在解析文本(我可以做到)和管理数据层次结构(主要问题)之间建立联系。超链接或小型演示代码都很好......我只需要指针就可以走上正确的轨道。

0 投票
1 回答
1270 浏览

python - 如何在pyparsing中禁止文字之间的空格?

语法需要拒绝from : mary并且只接受from:mary即没有任何交错空格。如何在 pyparsing 中强制执行此操作?谢谢

0 投票
1 回答
251 浏览

python - 这种技术在 pyparsing 中构造 ParseResults 是否可以接受?

我觉得ParseActions在尝试构建生成的解析树(ParseResults在 pyparsing 中称为)时,我的代码有点笨拙。

我现在要做的是让全局变量存储Group元素返回的匹配标记组。最后,我会将结果注入toks字典。这个可以吗 ?

我的粗略语法:

请注意ExprAExprB等可以以任何顺序交错。但是我想将一种类型的所有表达式分组到 ParseResults 中的一个字典条目中。你觉得我的技术怎么样?我不喜欢使用全局变量,因为它使多线程成为问题。我还有其他选择吗?

0 投票
1 回答
412 浏览

python - 为什么我的用例在 pyparsing 中的有序选择失败?

是否抛出 ParseException 是因为scooby已经在字符流中消耗了,因此解析器无法回溯?我正在为此寻找详细的实现解释。

目前,我认为这是一个错误,因为解析器为什么会短路匹配,因为它没有搜索生产规则中的所有选择。

更新

似乎MatchFirst不完全等同于|运算符。为什么 ?