Удаление непечатаемыемых специальных символов и знаков из слов через regex

Есть текст, например:

Twenty-five years have passed since the 1991 incident in which Indian army soldiers allegedly raped between 23 and 100 women in Kashmir2"!s Kunan and Poshpora villages during a search operation.

но в нём есть неотображаемые символы. Как с помощью регулярных выражений написать правило для re, чтобы удалить эти символы. Эти символы могут быть как внутри слова, так и просто отдельно от них. Стандартный re.sub(r'\W', ' ', str(X[sen])) не избавляет от них. Код символов что-то около x04.

З.Ы. Конечно при опубликовании эти символы не видно, представьте, что в слове "Kashmir2" перед двойкой в текстовом редакторе несколько квадратиков написано :)


Ответы (1 шт):

Автор решения: DiMithras

В регулярках есть выражениe, чтобы искать 8-ми битные коды.

Код символов что-то около x04

Если у вас только этот код, то убрать его можно через \x04.

Если их больше, то можно написать выражение для поиска всех нечитаемых символов через диапазоны:

  • [\x00-\x1F\x7F-\xFF] — убрать все символы в диапазонах 0-31, 127-255
    соответствует 7 bit ASCII
  • [\x00-\x1F\x7F] — убрать все символы в диапазоне 0-31 и 127-ой
    соответствует 8 bit ASCII
  • [\x00-\x1F\x7F\xA0]/u — для UTF-8

Подробнее здесь на английском stack overflow.

В Вашем конкретном случае подойдёт любой из представленных вариантов.

введите сюда описание изображения

→ Ссылка