在我的 pyparsing 代码中,我有以下表达式:
exp1 = Literal("foo") + Suppress(Literal("=")) + Word(alphanums+'_-')
exp2 = Literal("foo") + Suppress(Literal("!=")) + Word(alphanums+'_-')
exp = Optional(exp1) & Optional(exp2)
我想把exp2中的foo改成bar,这样我就可以区分解析数据中的=和!=了。这可能吗?
最佳答案
Karl Knechtel 的评论是有效的,但如果您想更改匹配的标记,您可以在解析操作中执行此操作。
def changeText(s,l,t):
return "boo" + t[0]
expr = Literal("A").setParseAction(changeText) + "B"
print expr.parseString("A B").asList()
将打印:
['booA', 'B']
如果您只想用常量文字字符串替换表达式,请使用
replaceWith
:expr = Literal("A").setParseAction(replaceWith("Z")) + "B"
print expr.parseString("A B").asList()
打印:
['Z', 'B']
关于python - 在pyparsing期间更改字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24954340/