У меня проблема при попытке применить регулярное выражение к некоторым строкам, закодированным в латинице-1 (ISO-8859-1).
То, что я пытаюсь сделать, это отправить некоторые данные через HTTP POST со страницы, кодированной в ISO-8859-1, в мое приложение python и выполнить синтаксический анализ данных с помощью регулярных выражений в моем скрипте python.
Веб-страница использует jQuery для отправки данных на сервер, и я извлекаю текст со страницы, используя метод .text()
. Как только данные отправляются обратно на сервер, они выглядят так: re.compile(r"^[\s,]*(\d*\s*\d*\/*\d)[\s,]*")
- К сожалению, \s
в моем регулярном выражении не соответствует моим данным, и я проследил проблему до того факта, что html-страница использует
, что кодируется в 0xA0
(неразрывный пробел) и отправляется на сервер. Кажется, по какой-то причине мой сценарий не интерпретирует этот символ как пробел и не соответствует. Согласно питону [документация] [1] похоже, что это должно работать, поэтому у меня должна быть проблема с кодировкой.
Затем я хотел попробовать преобразовать строку в юникод и передать ее в регулярное выражение, поэтому я попытался посмотреть, что произойдет, когда я преобразовал строку: print(unicode(data, 'iso-8859-1'))
.
К сожалению, я получил эту ошибку:
UnicodeEncodeError at /script/
'ascii' codec can't encode character u'\xa0' in position 122: ordinal not in range(128)
Хотя я в замешательстве - я, очевидно, не пытаюсь использовать ASCII-декодирование - пытается ли Python декодировать, используя ASCII, даже если я явно передаю другой кодек?