1
默认情况下,pyparsing只删除前导空格。删除尾随空格
所以这解析
'between (1, map( v7 , 2 ))'
给我
['between', [['1'], ['map', [['v7 '], ['2 ']]]]]
,而不是
['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。
此时我使用额外的外部函数来解析和修复数据。
你能否包含你用来获得这个的解析器代码?如果你告诉它,pyparsing将只包含匹配内容的空格。 – PaulMcG
在某些时候,你必须告诉pyparsing保留空格。默认情况下,它将删除所有空白并为您标记。正如保罗所说,除非你发表你的语法,否则我们无法帮助你。 – Hooked
运行您的发布代码会在''['1'],['map',['v7'],['2']]]'之间打印'['' - 不存在尾部空格。 – PaulMcG