Да, но это может быть сложно, и это зависит именно от того, какой текст у вас есть.
Модуль unicodedata
предоставит вам данные. Лично я бы начал с нормализации, например с NFKC
или NFC
, в зависимости от ваших входов.
s = unicodedata.normalize(form, s)
Тогда я бы отфильтровал наши ненужные символы.
s = [c for c in s if not unicodedata.category(c).startswith('C')]
Вы можете найти Общая категория в http://www.unicode.org/reports/tr44/tr44-6.html#Property_Values.
Категории, которые начинаются с C: control / Formatting .
Но вам может потребоваться включить и другие пробелы, в зависимости от варианта использования.
Возможно, вам также необходимо выполнить другую «нормализацию», объединяя все пробелы в один U + 0020.
Очень сложно обобщить (но при первой нормализации), потому что каждая кодовая точка Юникода может иметь некоторое семантическое значение.
Поэтому вы должны проверить, что вы можете выбросить и что вы должны сохранить.