Python pyparsing-字符串解析以生成Where子句
我有一根像这样的线-Python pyparsing-字符串解析以生成Where子句,python,pyparsing,Python,Pyparsing,我有一根像这样的线- ((COL1==VAL1)+(COL2==VAL2)) 我想将其转换为以下格式: ((a.col1 == 'VAL1') & (a.col2 == 'VAL2')) 另一个例子: 发件人: ((COL1==VAL1)|(COL2==VAL2/A)) 致:a.col1=='VAL1'| a.col2=='VAL2/a' 有人能帮忙吗 代码: 这种类型的表达式只适用于一个表达式:a.col1=='VAL1'。但我希望它能够处理多个表达式。这实际上是pyparsin
((COL1==VAL1)+(COL2==VAL2))
我想将其转换为以下格式:
((a.col1 == 'VAL1') & (a.col2 == 'VAL2'))
另一个例子:
发件人:
((COL1==VAL1)|(COL2==VAL2/A))
致:a.col1=='VAL1'| a.col2=='VAL2/a'
有人能帮忙吗
代码:
这种类型的表达式只适用于一个表达式:a.col1=='VAL1'。但我希望它能够处理多个表达式。这实际上是pyparsing的infixNotation方法的一个很好的候选者。为相等比较定义一个表达式,然后将其用作简单NOT/和/或infixNotation解析器中的操作数
infixNotation将处理括号的所有嵌套,还将帮助您应用操作的优先级。您尝试了什么?请发布您的代码,即使它不起作用。请查看我编辑的问题。请将您的代码包含在问题中并适当设置格式。
word = Word(alphas + alphanums + "+-_<> ")
open = Literal('(')
close = Literal(')')
single_quote = Literal('\'')
and_ = Literal('+')
equal = Literal('=')
comma = Literal(',')
or_ = Literal('|')
right_hand_value = word
left_hand_value = word
func = OneOrMore(open) + left_hand_value + OneOrMore(equal) + right_hand_value + OneOrMore(close)
results = func.parseString(string)