首页 > 解决方案 > PyParsing:如何解析函数调用并将其作为字符串返回

问题描述

这里我有这段代码来解析函数调用:

functionName = Word(alphanums + '_')
functionBody = Forward()
functionBody <<= functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")"))

但是,调用时:

result = functionBody.parseString('function(param1,param2,param3)')

我得到了这个结果:

['function', '(', 'param1', 'param2', 'param3', ')']

有没有办法得到这个结果:

['function(param1, param2, param3)']

就是说:解析函数调用写的很好,但是不使用Pythonjoin语句就将其返回为字符串而不是数组?

标签: pythonpyparsing

解决方案


我感谢PaulMcG先生,因为他在评论中给出了三个可能的答案,但我正在为可能也需要它的人发布一个解决方案。originalTextFor为我做了诀窍:

functionName = Word(alphanums + '_')
functionBody = Forward()
functionBody <<= originalTextFor(functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")")))

现在它正在返回:

['function(param1,param2,param3)']

推荐阅读