我有一个看起来像的字符串
"word1 AND word2 AND word3 AND word4"
"word1 OR word3 AND word4"
"word1 word3"
我想word3
在它出现时从字符串中删除。为此,我使用以下代码
regex = re.compile(re.escape('word3'), re.IGNORECASE)
keywords = regex.sub('', keywords)
我还想删除任何出现的AND
或OR
单词,如果它们出现在word3
. 无法弄清楚如何去做。
我需要的输出是
"word1 AND word2 AND word4"
"word1 AND word4"
"word1"
可能存在word3
字符串中的第一个单词的极端情况。在这种情况下,应该删除 if 之后的第一个 AND/OR
"word3 AND word4 or word1"
应该成为
"word4 or word1"
这是我能得到的最接近工作答案的东西:
keywords = "word3 AND word3 OR word2 AND word1 AND word3 OR word4 AND word3"
keywords = re.sub(r'(?:(?:and|or) )?word3\s*', '', keywords, flags=re.I)
keywords = re.sub(r'^\s*(?:and|or)\s*', '', keywords, flags=re.I)
print(keywords)
word2 AND word1 AND word4
首先,我们做一个类似于其他答案的替换来删除一个word3
术语。在这种情况下,我寻找一个可能的前AND|OR
项也删除。然而,有一个边缘情况,例如
word3 AND word2 OR word1
在这里,我们最终会得到这样的结果:
AND word2 OR word1
因此,我再次调用以re.sub
删除可能仍然存在的前导分隔符。
这个回答还是有问题。在我的示例输入中:
word3 AND word3 OR word2 AND word1 AND word3 OR word4 AND word3
在不立即删除分隔符的情况下删除所有word3
术语会留下以下内容:
word2 AND word1 AND OR word4
换句话说,不清楚我们应该在这里选择哪个分隔符,AND
而不是OR
,来分隔word1
和word4
项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句