Я столкнулся с чем-то похожим, когда пытался сопоставить строку на русском языке.В вашей ситуации ответ Мишеля работает отлично.Если вы хотите использовать специальные последовательности, такие как \w
и \s
, вы должны изменить некоторые вещи.Я просто делюсь этим, надеясь, что это будет полезно кому-то еще.
>>> string = u"</td><td>Я люблю мороженое</td><td> 40.00</td>"
Сделайте вашу строку в кодировке Unicode, поставив u
перед кавычками
>>> pattern = re.compile(ur'>([\w\s]+)<', re.UNICODE)
Установитеуказывать на юникод, чтобы он также совпадал со строками юникода (см. docs ).
(В качестве альтернативы вы можете использовать свой местный язык для установки диапазона. Для русского языка это будет [а-яА-Я]
, поэтому:
pattern = re.compile(ur'>([а-яА-Я\s]+)<')
В этом случае вам не нужноустановите флаг больше, так как вы не используете специальную последовательность.)
>>> match = pattern.findall(string)
>>> for i in match:
... print i
...
Я люблю мороженое