Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyparsing-字符串解析以生成Where子句_Python_Pyparsing - Fatal编程技术网

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)