如何在python中创建AND-OR树?

如何在python中创建AND-OR树?,python,regex,tree,interactive,Python,Regex,Tree,Interactive,我需要实现AND-OR树,例如用于以下内容: (ENG 2120或MEEM 2150)和(CE 3620或CEE 3620) 到目前为止,我已经实现了直到深度1,但是它没有考虑和或表达式。理想情况下,我希望有一个互动的树,可以做很多层次,需要有一个和或分裂之间的区别 我的代码如下所示: def course(): dept = input("Enter Course Dept: ") number = input("Enter Course Code: ") row =

我需要实现AND-OR树,例如用于以下内容: (ENG 2120或MEEM 2150)和(CE 3620或CEE 3620)

到目前为止,我已经实现了直到深度1,但是它没有考虑和或表达式。理想情况下,我希望有一个互动的树,可以做很多层次,需要有一个和或分裂之间的区别

我的代码如下所示:

def course():
    dept = input("Enter Course Dept: ")
    number = input("Enter Course Code: ")
    row = data[(data['Department']==dept.upper()) & (data['Course_number']==number)]
    op=row.Pre_Requisites.values
    str_join = "".join(op)
    display(HTML(row.to_html()))
    if 'None' in str_join:
        print("No pre-req for this course!")
    else:
        r = replace_all(str_join, ["and", "or", "(", ")"], ",")
        string= [part.split() for part in r.split(",") if part.strip()]
    #print(string)

        for item in string:
            if item[0] == 'C':
                continue
            if item[0] == 'ENVE':
                print(item[0],item[1])
                continue
            if item[0] == 'CE':
                continue
            display(HTML(data[(data["Department"] == item[0]) & (data["Course_number"] == item[1])].to_html()))
你知道我如何实现这样一个树吗?我的理想输出需要如下所示:


我的输出与此图所示类似。

是否尝试将字符串
(ENG 2120或MEEM 2150)和(CE 3620或CEE 3620)
转换为树?您可能需要创建自己的解析器-即。而且它可能需要使用递归-函数首先必须将代码拆分为三个元素
(…)
(…)
,然后它必须使用来检查
(…)
中的部分-如果此部分将有另一个
(…)
,那么它必须使用此部分来运行自己,你是否尝试将字符串
(ENG 2120或MEEM 2150)和(CE 3620或CEE 3620)
转换为树?您可能需要创建自己的解析器-即。它可能需要使用递归-函数首先必须将代码拆分为三个元素
(…)
(…)
,然后它必须使用来运行自己,以检查
(…)
中的部分-如果这个部分将有另一个
(…)
,那么它必须使用这个部分来运行自己,等等。这样就得到了递归。