- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
from pyparsing import *
class AParseActionHolder(object):
def __call__(self, string, index, t):
f(info_from_outer_parse_results,t[0])
expr = operatorPrecedence( Word(nums),[
(Literal('A'), 1, opAssoc.RIGHT,AParseActionHolder()),
(Literal('B'), 2, opAssoc.LEFT),
(Literal('C'), 2, opAssoc.LEFT)])
print(expr.parseString("3B1C2BA1")[0])#[['3','B','1'],'C',['2','B',"nested in B and C"]]
print(expr.parseString("A1B3")[0])#["nested in B", 'B', '3']
print(expr.parseString("A(1B3)")[0])#["not nested", ['1', 'B', '3']]
如何从嵌套了 parseaction 参数的外部解析结果中访问信息?我可以用解析来做到这一点吗?如果没有,是否有其他 Pyparsing 工具,或者我应该定义以 pyparsing.ParseResults 作为参数的递归函数?
最佳答案
不,没有办法访问外部结果 - 在您的情况下,因为在解析内部结果时它们甚至还没有被解析!
您可能需要编写一个递归函数,该函数适用于从 parseString
返回的完全解析的树。当您在树上行走时,跟踪您的路径,当您找到“A”元素时,将其替换为路径。
直接使用返回的 ParseResults
可能很困难,因此您可能希望通过对返回的结果调用 asList()
来获取树:
tree = expr.parseString("whatever").asList()
关于python - Pyparsing:在parseaction中访问外部ParseResults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50375933/
我正在使用以下类型的 Pyparsing 表达式。 pp.SkipTo(common_cfg)('value 2') + common_cfg + pp.SkipTo(pp.LineEnd()) co
我开发了一个 pyparsing 语法,它必须向输出插入新的标记。此标记不是来自原始输入。 例如: 输入: '/* foo bar*/' 输出: ['comment', '/* foo bar*/']
我正在开发一个翻译器,用于将 PC 上的简单脚本翻译成一些字节码,以便在微 Controller 上执行它(字节码)。 我已经使用 lex 和 re2c 在 C++ 中开发了翻译器,但我正在考虑切换到
是否可以告诉 pyparsing 不存储 ParseResults 或手动丢弃它们? 我正在解析一个大型项目文件,并且可以通过解析操作对每个项目进行所有后处理。因此,一旦一个项目被解析,我就不再需要它
>>> from pyparsing import Word, alphanums, OneOrMore, Optional, Suppress >>> var = Word(alphanums) >
我有一个 ParseResults 对象,当我转储它时它看起来像这样: [[['FM4', '230', '30', '680']]] [0]: [['FM4', '230', '3
我的 PyParsing 语法有以下测试代码: from pyparsing import Word, nums, alphas, delimitedList, Group, oneOf from p
我目前正在尝试将 pyparsing 的结果作为纯列表获取,以便我可以展平它。我在文档中读到 ParseResults can also be converted to an ordinary lis
我觉得在尝试构建生成的解析树(在 pyparsing 中称为 ParseResults)时,ParseActions 使我的代码有点笨拙。 我现在要做的是使用全局变量来存储 Group 元素返回的匹配
我在 Heroku 上运行应用程序时遇到问题。本地版本似乎工作正常,但我无法在 heroku 平台上调用 create_db()。 这是错误轨迹。 (venv)S-MBP:LaunchPage3 S$
我目前正在使用 pyparsing 来识别字符串中是否使用了嵌套括号,以便识别错误地连接到单词的引用号。 例如,“苹果(4)”。 我希望能够识别引用子标记(“(4)”)。但是,当我使用 searchS
有谁知道 Heroku 在部署时有什么变化?我有一个使用 Ubuntu 11.10 的本地开发机器设置,我的项目安装到 venv 中,所有包都通过 pip 管理。相应的requirements.txt
我使用 scala.util.parsing.combinators.Parsers 编写了词法分析器和解析器。我的作品中至少有一个错误,但我有太多错误,很难通过观察它们来确定问题所在。 我需要的是我
非常感谢任何有将 redis 配置为 heroku 上 celery-brokered django 项目后端经验的人的意见。我的任务调度在 localhost 上运行良好,但我发现将它部署到 her
我的测试代码可以在 Python 2.7.11 中运行,但在 Python 3.5.1 中失败: import pyparsing as pp import pickle class Greeting
这里我将第三方库volley转移到retrofit。实际上我在很多项目中都使用了retrofit,但这是一些独特的问题和解决方案,也没有从google得到。 此处应用构建 Gradle: apply
我是一名优秀的程序员,十分优秀!