我想用python编写一个解析器程序,它解析给定的字符串并将其存储在树数据结构中。
示例输入:"(1 OR (2 AND 3) OR 4)“
预期输出:

有没有人能带我通过。
发布于 2021-04-17 02:05:32
eval是word,你要找的,最简单的方法是
def FUNC1(f1):
''' do you logic'''
print('In FUNC1 --',locals())
print('returning 10')
return 10 #dummy
def FUNC2(f2):
''' do you logic'''
print('In FUNC2 --',locals())
print('returning 20')
return 20 #dummy
def AND(*args):
''' do you logic'''
print('In AND --',locals())
print('returning 30')
return 30 #dummy
def OR(*args):
''' do you logic'''
print('In OR --',locals(),)
print('returning 40')
return 40 #dummy
expression = 'FUNC1(OR(1,FUNC2(AND(2,3)),4))'
## evaluate expression
eval(expression)
##output
##In AND -- {'args': (2, 3)}
##returning 30
##In FUNC2 -- {'f2': 30}
##returning 20
##In OR -- {'args': (1, 20, 4)}
##returning 40
##In FUNC1 -- {'f1': 40}
##returning 10发布于 2021-04-17 00:26:02
对于更复杂的字符串解析,你应该考虑使用正则表达式,Python中有一个名为re的库提供了它:
import re
pattern = '[0-9]'
nums = re.findall(pattern, '(1 OR (2 AND 3) OR 4)')
print(nums)
>>> ['1', '2', '3', '4']https://stackoverflow.com/questions/67127813
复制相似问题