我正在尝试创建一个搜索系统,该系统查找包含多个AND,OR和括号的搜索关键字。我现在想要做的是用布尔值替换括号。 因此,如果我有一个列表[“ A”,“或”,“(”,“ B”,“和”,“ C”,“)”],我想将此列表更改为[“ A”,“或” “,是]。
首先,我尝试了del关键字,然后像下面的代码一样附加布尔值。这仅适用于此示例。但是我可能在列表的前面或中间有括号,在这种情况下它不起作用。(因为append关键字总是将元素添加到末尾)
我也尝试了replace关键字,但这返回了输出[“ A”,“ or”,“ T”,“ r”,“ u”,“ e”]
如何将[“(”,“ B”,“和”,“ C”,“)”]替换为True?
sentence = ["B", "C", "D"]
search = ["A", "or", "(", "B", "and", "C", ")"]
if "(" in search:
start = search.index("(")
end = search.index(")")
bracket = search[start + 1 : end]
if "and" in bracket:
index_of_and = bracket.index("and")
if bracket[index_of_and - 1] and bracket[index_of_and + 1] in sentence:
print("both in")
bracket = 'True'
else:
print("only one or nothing in")
bracket = 'False'
elif "or" in bracket:
index_of_or = bracket.index("or")
if bracket[index_of_or -1] in sentence or bracket[index_of_or +1] in sentence:
bracket = 'True'
else:
bracket = 'False'
else:
if bracket[0] in sentence:
bracket = 'True'
else:
bracket = 'False'
del search[start:end+1]
search = search.append(bool(bracket))
答案 0 :(得分:0)
del search[start - 1: end + 1]
search.insert(start - 1, bracket)
答案 1 :(得分:0)
您的代码有点难以阅读,但是我认为它的唯一问题是结尾处的追加,因为您不知道结尾括号是句子结尾的结尾会影响您的逻辑,相反,您应该插入和追加操作不会返回任何内容,因此此行:
search = search.append(bool(bracket))
应该是
search.insert(start - 1, bool(bracket))
我也不确定您是如何成功地做到明智的,这只有在您进行list("true")