Каков правильный способ использования символов Юникода в регулярном выражении python

В процессе соскабливания некоторых документов с использованием Python 2.7 я столкнулся с некоторыми раздражающими разделителями страниц, которые я решил удалить. Сепараторы используют некоторые фанковые символы. Я уже задал один вопрос здесь о том, как заставить этих персонажей показывать коды utf-8. Используются два не-ASCII-символа: '\xc2\xad' и '\x0c'. Теперь мне просто нужно удалить эти символы, а также некоторые пробелы и номера страниц.

В другом месте на SO, я видел символы Unicode, используемые в тандеме с регулярными выражениями, но в странном формате, в котором у меня нет этих символов, например. '\u00ab'. Кроме того, ни один из них не использует ASCII, а также символы, отличные от ASCII. Наконец, документы python очень легки в отношении unicode в регулярных выражениях... что-то о флажках... Я не знаю. Может ли кто-нибудь помочь?

Вот мое текущее использование, которое не делает то, что я хочу:

re.sub('\\xc2\\xad\s\d+\s\\xc2\\xad\s\\x0c', '', my_str)

Ответ 1

Вместо того, чтобы искать конкретные нежелательные символы, вы можете удалить все, что вам не нужно:

re.sub('[^\\s!-~]', '', my_str)

Это исключает все символы:

  • пробелы (пробелы, табуляции, новые строки и т.д.)
  • печатные "нормальные" символы ascii (! - первый печатный char и ~ последний под десятичным 128)

При необходимости вы можете добавить больше символов - просто настройте класс символов.