PyParsing:如何解析函数调用并将其作为字符串返回

时间:2020-01-13 13:16:25

标签: python pyparsing

here中,我有以下代码来解析函数调用:

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)']

这就是说:解析函数调用的方式写得很好,但是不使用Python join语句而将其作为字符串而不是作为数组返回?

1 个答案:

答案 0 :(得分:0)

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

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

现在它正在返回:

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