问题标签 [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 投票
1 回答
533 浏览

pyparsing - 类似 Excel 的玩具公式解析

我想创建一个语法来解析类似于 S 表达式语法的玩具式公式语言。

我通读了“PyParsing 入门”一书,其中包含一个非常好的部分,涵盖了类似的语法。

要解析的两个数据示例是:

现在,我想出了一种语法,它可以解析公式,但忽略扩展函数和运算符优先级。

继续使用它的最佳做法是什么:我是否应该为匹配 oneOf 函数名称( sum, avg ... )的单词添加 parseActions 。如果我构建一个嵌套列表,我可以对解析结果进行深度优先遍历并评估函数吗?

0 投票
1 回答
248 浏览

python - 使用 pyparsing 解析稀疏 ARFF 时出错

全部

我找到了一段代码来解析简单的 ARFF 文件,我想将其更改为适合稀疏 ARFF,其数据如下所示:

这是代码:

但它不起作用

我想我必须告诉程序识别空白,但我不知道如何

非常感谢

0 投票
1 回答
2861 浏览

python - 将正则表达式 pyparsing as Word

我正在构建一个语法解析器来对使用点符号标识的对象执行简单的操作,如下所示:

但在DISABLE ALL关键字ALL中匹配为 3Regex(r'[a-zA-Z]') => 'A', 'L', 'L'我用来匹配参数。

如何使用正则表达式制作 Word?AFAIK 我无法A.1.1使用 Word

请看下面的例子

0 投票
2 回答
550 浏览

python - 解析问题

现在我刚刚开始使用pyparsing来解析简单的后缀表达式。目前,我做到了这一点:

但是当我运行它时,它会打印:

我究竟做错了什么?

0 投票
1 回答
445 浏览

python - pyparsing setParseAction 没有令牌传递

我对 pyparsing 和 Python 很陌生,所以这是一个警告,我可能做错了什么。

我想做的是构建一个 SQL 解析器并构建带有节点的树,然后我可以遍历这些节点。

我正在尝试从 yacc/bison 语法文件中复制这种东西:

这是我在 Python 中的代码:

注意:这是 Paul McGuire 的 select_parser.py 的精简版

我想我必须使用 setParseAction 但每当我这样做时,我总是在我调用的方法中得到 None 。我得到了完整的字符串和位置,但没有令牌。

调用 setParseAction 来复制 yacc/bison 逻辑的最佳位置在哪里?

0 投票
1 回答
197 浏览

pyparsing - 使用 pyparsing 提取可变长度子字符串

我试图让 pyparsing 从字符串中提取由可变数量的单词组成的子字符串。

以下几乎可以工作,但丢失了子字符串的最后一个单词:

输出:

我错过了什么?

PS:我知道我可以用正则表达式做到这一点,但特别想用 pyparsing 做到这一点,因为它需要适应已经使用 pyparsing 编写的大量工作。

0 投票
1 回答
838 浏览

python - pyparsing,每个,结果名称

我正在尝试使用 pyparsing 构建一个有点不完全 sql 的解析器(我没有 from 子句,我没有任何连接等)。我今天的工作基于 pyparsing 中包含的 simpleSQL.py 示例脚本。我正在尝试将“GROUP BY”和“ORDER BY”子句添加到解析器,但无论哪个在另一个之前都试图匹配它们。

我正在使用 Each 类,它似乎与它们匹配,但它没有在 Each 类中设置结果名称。我要么没有做正确的事情,要么正在发生一些我不清楚的事情。

同样,从 simpleSQL.py 示例中,我删除了 fromToken,所以我的 selectStmt 现在看起来像:

我得到结果:

因此,看起来它正在以任一顺序解析 group 和 order 子句,但没有分配结果名称(分配给“order”和“group”)。我可以看到这完全是愚蠢的,并且我遗漏了一些东西,或者我可以看到我要以任何顺序查找这些子句(以及将来的更多子句,例如 LIMIT)完全错误。

任何帮助将不胜感激!到目前为止,我很喜欢 pyparsing。

0 投票
2 回答
202 浏览

python - 如何从 Python 中的输出中提取特定信息

所以我有一个给出输出的代码,我需要做的是在逗号之间提取信息,将它们分配给一个在调用时动态变化的变量......这是我的代码:

这给了我输出:

所以我需要例如能够将 (0.793803, 0.136326, 0, 0.5, 0) 分配给 (1x,1y,1z,1w,1s), (0.772345,0.642332,0,0.5,0) 分配给 (2x , 2y, 2z, 2w, 2s) 等,这样无论什么数字填充这些位置,它们都将采用该值。

这是我需要将这些数字放入的代码:

所以我有我的矢量我希望能够放置 (px, py,0.z,pw,ps) 然后 (p2.x,p2.y,p2.zp2.wp2.s) 等,这样它就可以根据给定的数字更改

任何帮助都会很棒..提前谢谢你!

-杰夫

0 投票
1 回答
269 浏览

python - 如何分离输出数据

这是我的代码:

这是输出:

我想弄清楚如何标注给定的各个点。例如,我如何让代码只吐出 0.793803,或者只吐出 0.136326 等

附录

所以我最终做的是添加这个

这产生了:

但是当我再次尝试解析并写了

它提出了错误 p 未定义

所以我尝试了 (x,y,z,w,s) = point1

这产生了太多的值而无法解包的错误。

我尝试的另一件事是

它刚刚产生了第一个 ( 而不是整个 X 值......

有什么解决办法吗?

附录 PT 2

所以会发生这样的事情:

当我输入这个

我不知道它为什么拉 (, from (0.793803,0.136326,0,0.5,0)

我可以告诉你,程序认为如果我把 x, y, z, w, s

我想要 x: '(' y: '0' z: '.' w: '7' s: '9' 我不想要:x: 0.793803 y: 0.136326 z: 0 w: 0.5 s: 0

抱歉所有问题,非常感谢您的帮助

0 投票
2 回答
82 浏览

python - 控制我的输出

这是代码:

这是我的输出:

从这个输出中,我希望能够将(0.793803)分配给变量“point1x”(0.136326)分配给变量point1y(0)分配给变量point1z(0.5)分配给变量point1w和(0)分配给变量point1s。

因此,我希望它不只是输出,而是(0.793803,0.136326,0,0.5,0)单独给我值

所以:

有谁知道我该怎么做?