Другой подробный ответ:
import re
data = "[a] 1 [b] test [c] other characters"
pattern = '\[.*?\]' #any character(s) with [ ]
unwanted = set(re.findall(pattern,data))
results = ' '.join(i for i in data.split()
if i not in unwanted)
print(results)
# 1 test other characters
Обновлено
Условие добавления
Проблема> "[a] 1 [b] test [1] other [c ] haracters "Из-за .split()
это не будет заменено
import re
data = "[a] 1 [b] test [1] other [c]haracters"
pattern = '\[.*?\]' #any character(s) with [ ]
print(re.sub(pattern,'',data))
# " 1 test other haracters"
Чтобы удалить лишние пробелы
_ = re.sub(pattern,'',data).split()
print(' '.join(i for i in _ if i))
# "1 test other haracters"