问题标签 [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 回答
747 浏览

python - pyparsing中是否有“startswith”方法

嘿,我用 pyparsing 编写了一个非常简单的解析器,它检测文本中的一些标记,然后用不同的字符串替换它们。问题是现在我的代码只适用于完全匹配。我想做的也是检测部分匹配。例如,如果令牌是“foobar”,我想匹配一个像“foobarfoo”这样的词。有没有办法用pyparsing做到这一点?我查看了这些示例并进行了一些研究,但我一无所获。

谢谢

编辑:

我有一个要匹配的标记列表和文本中的单词列表。所以我想要一个考虑到这一事实的解决方案。令牌列表可能非常大。

0 投票
1 回答
361 浏览

performance - 如何提高pyparsing的启动时间?

我已经使用 pyparsing 编写了一个大型(对我而言)语法来解析 H248 消息,这是一种文本格式,大约有 500 行 pypasing 结构。如果我向解析器提供许多要解析的消息,我发现平均性能是可以接受的(我的电脑上每条消息大约半秒)。

但是我的解析器的基本用法是只解析一条消息,然后转储出某些部分,我把它写成一个独立的程序。现在在我的 x86 电脑上花了 12 秒(在共享的 solaria 服务器上需要 1 分 12 秒!)来解析第一条消息。所以我想知道是否有任何技术可以绕过这个启动时间?我尝试了 psyco,它对启动时间没有帮助。

我现在要做的是编写一个长寿服务器导入解析器并接受解析请求,然后另一个独立的程序(经常触发)与这个服务器进程交互,从而获得快速响应的效果。这样,我就失去了将解析结果用作 python 对象的机会。我想知道是否有更好的方法来实现我的目的?

顺便说一句,如果我在 12 秒之前手动中断我的解析器,堆栈跟踪显示它正在递归调用 streamline()。

谢谢!凯文

0 投票
2 回答
800 浏览

python - 得到一个完整的 unicode 句子

我正在尝试像Base: Lote Numero 1, Marcelo T de Alvear 500. Demanda: otras palabras.我想要的那样解析一个句子:首先,用句点分割文本,然后,使用冒号之前的任何内容作为冒号label之后的句子。现在我有以下定义:

和一种作品,但它放弃了 unicode 字符(以及任何不在字母数字中的字符),我想我希望有value一个完整的句子而不是这个:'value': [(([u'Lote', u'Numero', u'1', ',', u'Marcelo', u'T', u'de', u'Alvear', u'500'], {}), 1)

有一个简单的方法来解决这个问题吗?

0 投票
3 回答
1223 浏览

python - pyparsing - 解析 xml 注释

我需要解析一个包含 xml 注释的文件。具体来说,它是使用 MS///约定的 ac# 文件。

从此我需要退出foobar,或者/// foobar也可以接受。(注意 - 如果您将 xml 全部放在一行上,这仍然不起作用......)

这是我所拥有的:

并输出:

但是我在跨多行工作的语法方面没有取得太大的成功。

(注意 - 我在 python 3.2 中测试了上述示例;它可以工作,但(根据我的问题)不打印任何值)

谢谢!

0 投票
1 回答
346 浏览

python - pyparsing recursive 不会抛出异常

我有以下片段,其中包含来自 pyparsing 解析器的递归语句:

当我提供这个查询时:

它产生:

只是默默地跳过最后一个条件。没有抛出异常。

如何捕获此字符串中的错误?

0 投票
1 回答
913 浏览

python - Pyparsing - 在不同位置带有换行符的文字文本

我正在使用 pyparsing 来解析包含行结束位置不同的文本的文档。无论换行位置如何,我都需要编写一个与文本匹配的解析器表达式。以下不起作用:

这导致控制台上显示以下内容:

由于 ParserElement.DEFAULT_WHITE_CHARS 中包含换行符,我不明白为什么两个字符串都不匹配我的表达式。如何创建一个解析器元素,无论换行符发生在哪里,它都匹配文本?

0 投票
2 回答
2098 浏览

python - 在 pyparsing 中进行简单解析时遇到问题

我在使用 pyparsing 时遇到了一些基本问题。下面是测试程序和运行的输出。

如何修改测试程序中的语法以解析以句点结尾的逗号分隔名称列表?我查看了文档并试图找到一个实时支持列表,但我认为我最有可能在这里得到回复。

0 投票
1 回答
8976 浏览

python - 解析示例

这是我第一次尝试使用 pyparsing,我想问一下如何过滤这个示例行:

获得如下输出:1,52.125133215643,21.031048525561,116.898812

一般来说,我在理解 pyparsing 逻辑方面存在问题,因此将不胜感激任何有关此示例的帮助。谢谢

0 投票
4 回答
1780 浏览

python - 除全局变量外,pyparsing 解析动作中的上下文

我希望能够解析两个(或任意数量)表达式,每个表达式都有自己的一组变量定义或其他上下文。

似乎没有一种明显的方法可以将上下文与pyparsing.ParseExpression.parseString(). 最自然的方法似乎是使用某个类的实例方法作为解析操作。这种方法的问题是必须为每个解析上下文(例如,在类的__init__)中重新定义语法,这似乎非常低效。

使用pyparsing.ParseExpression.copy()规则没有帮助;单个表达式可以被克隆,但是组成它们的子表达式不会以任何明显的方式更新,因此不会调用任何嵌套表达式的解析操作。

我能想到的获得这种效果的唯一其他方法是定义一个返回无上下文抽象解析树的语法,然后在第二步中对其进行处理。即使对于简单的语法,这似乎也很尴尬:最好在使用无法识别的名称时引发异常,并且它仍然不会解析像 C 这样的语言,这些语言实际上需要关于之前发生的内容的上下文才能知道哪个规则匹配。

是否有另一种方式将上下文(当然不使用全局变量)注入到 pyparsing 表达式的解析操作中?

0 投票
1 回答
158 浏览

python - 如何使用python,pyparsing按顺序解析文件中的行/匹配足够的结果?

这是我的代码:



通过上面的示例,我想找到如何获得输出的解决方案,例如:

gps_line + 它是 break_line,在伪代码中意味着什么:


如果我的问题不清楚或不适合描述,请随时更改。

编辑#2
我试图实现的是输出: