删除尾随空格

2024-06-01 01:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

默认情况下,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。在

此时,我在解析之前和之后使用额外的外部函数来处理和修复数据。在


Tags: namemapgrouppyparsingbetweenoptionalwordforward
1条回答
网友
1楼 · 发布于 2024-06-01 01:24:37

发布的代码有两次出现alphanums + '_ ',将它们都改为alphanums + '_'(删除空格)可以实现您所描述的内容。在

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  ) )"))

印刷品:

^{pr2}$

我不确定你是否能从评论中得出这个结论,但看起来Paul McGuire就是这样描述的。也就是说,pyparsing只在匹配的内容中包含空格,因为alphanums + '_ '在匹配的内容中包含一个空格。在

相关问题 更多 >