默认情况下,pyparsing只删除前导空格。在
所以分析这个
'between ( 1, map( v7 , 2 ) )'
给了我
^{pr2}$而不是
['between', [['1'], ['map', [['v7'], ['2']]]]]
但是如何使用pyparsing删除后面的空白呢?在
代码是:
from pyparsing import Forward, Word, alphas, alphanums, nums, Literal, Group, delimitedList, Optional
lparen = Literal("(").suppress()
rparen = Literal(")").suppress()
name = Optional(Word(alphanums + '_ ', alphanums + '_ '))
functor = Word(alphas, alphanums)
integer = Word( nums )
expression = Forward()
arg = Group(expression) |name | integer
args = delimitedList(arg)
expression << ((functor + lparen + args + rparen) | name)
print( expression.parseString("between ( 1, map( v7 , 2 ) )"))
>>> ['between', ['1'], ['map', ['v7 '], ['2 ']]]
pyparsing。版本=“2.0.1”和python3。在
此时,我在解析之前和之后使用额外的外部函数来处理和修复数据。在
发布的代码有两次出现
alphanums + '_ '
,将它们都改为alphanums + '_'
(删除空格)可以实现您所描述的内容。在印刷品:
^{pr2}$我不确定你是否能从评论中得出这个结论,但看起来Paul McGuire就是这样描述的。也就是说,pyparsing只在匹配的内容中包含空格,因为
alphanums + '_ '
在匹配的内容中包含一个空格。在相关问题 更多 >
编程相关推荐