python - 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
语句就将其返回为字符串而不是数组?
解决方案
我感谢PaulMcG先生,因为他在评论中给出了三个可能的答案,但我正在为可能也需要它的人发布一个解决方案。originalTextFor
为我做了诀窍:
functionName = Word(alphanums + '_')
functionBody = Forward()
functionBody <<= originalTextFor(functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")")))
现在它正在返回:
['function(param1,param2,param3)']
推荐阅读
- c# - 使用 SqlKata 连接表查询
- java - Spring boot 启动器依赖覆盖了 qpid-jms-client 的 netty 版本
- c# - 如何向 RS232 串口发送命令?
- c# - 如何解决此“无法将类型'object'隐式转换为'Microsoft.Office.Interop.Excel.Worksheet'?
- django - 无法在 Django 中查询多对多关系
- jenkins - 如何将 ForkPullRequestDiscoveryTrait trustId 设置为协作者 - Jenkins
- python - 如何将 CTRL + 滚动绑定到 matplotlib 图?
- c - C 头文件中的全局变量初始化
- spring-data-jpa - Repository.save() 不在 SQSListener 中保存数据
- html - 如何在 Angular12 中显示视频错误