Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyParsing:如何解析函数调用并将其作为字符串返回_Python_Pyparsing - Fatal编程技术网

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

Python PyParsing:如何解析函数调用并将其作为字符串返回,python,pyparsing,Python,Pyparsing,我有以下代码来解析函数调用: functionName = Word(alphanums + '_') functionBody = Forward() functionBody <<= functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")")) 我得到了这个结果: ['function', '(',

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

functionName = Word(alphanums + '_')
functionBody = Forward()
functionBody <<= functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")"))
我得到了这个结果:

['function', '(', 'param1', 'param2', 'param3', ')']
有没有办法得到这个结果:

['function(param1, param2, param3)']
也就是说:解析函数调用写得很好,但是没有使用Python
join
语句,而是以字符串而不是数组的形式返回它?

我感谢Mr.,因为他在评论中给出了三个可能的答案,但我也为可能需要它的人发布了一个解决方案
originalTextFor
帮了我一把:

functionName = Word(alphanums + '_')
functionBody = Forward()
functionBody <<= originalTextFor(functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")")))
我感谢先生,因为他在评论中给出了三个可能的答案,但我为可能也需要它的人发布了一个解决方案
originalTextFor
帮了我一把:

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

“…没有使用Python连接语句?”这是为什么?我相信这是最好的方法。@jaidepshekhar,我正在另一个表达式中使用此代码段,如果我不将其称为字符串,pyparsing只会返回错误。您有3个选项:
originalTextFor
Combine
function\u body.addParseAction('.join)
。对这些进行一些实验,看看你最喜欢哪一个。“…不使用Python连接语句?”这是为什么?我相信这是最好的方法。@jaidepshekhar,我正在另一个表达式中使用此代码段,如果我不将其称为字符串,pyparsing只会返回错误。您有3个选项:
originalTextFor
Combine
function\u body.addParseAction('.join)
。用这些做一些实验,看看你最喜欢哪一个。
['function(param1,param2,param3)']