Исправленная версия
import re
test = "get 6 AND 9 or 3 for 6"
keywords = ['and', 'or']
print(' '.join(t for t in test.split() if t.lower() in keywords or t.isdigit()))
$ python test.py
6 AND 9 or 3 6
Отклоняет слова, содержащие и и или,
Предыдущая версия.Я думаю, что это довольно простое решение, но, к сожалению, оно не сработало, так как в нем используются слова «и» и «или» в более длинных словах.
import re
test = "get 6 AND 9 or 3"
pattern=re.compile("(?i)(and|or|\d|\s)")
result = re.findall(pattern, test)
print(''.join(result).strip())
$ python test.py
6 AND 9 or 3
Слова не чувствительны к регистру из-за (? I).Пробелы сохраняются с \ s, но удаляются из начала и конца в операторе печати.Цифры сохраняются через \ d.Круглые скобки и | или | \ d | \ s - это биты строки, найденной через findall, которая генерирует список найденного, затем они объединяются в функции печати.