LINUX.ORG.RU

Python, regex, UTF-8


0

1

Доброго дня.

у меня есть строка такого вида:
«test тест ÄäÖöÅå тест täällä и здесь тест». Строка UTF-8

Мне нужно вытащить из нее все русские слова питоном.
То есть должно получиться что-то типа
'тест', 'тест', 'и здесь тест'

Уже второй день сижу ничего не могу сделать.
пробовал выражение re.compile(ur'([^a-zA-zÄäÖöÅå]+)', re.U).

findall вытаскивает все ÄäÖöÅå наружу вместе с русскими символами.
То есть
' тест ÄäÖöÅå тест ', 'ää', 'ä и здесь тест'

Такое вообще возможно сделать питоном?

★★

(Не совсем о том, но всё же) Может тебе стоит выбирать те символы, которые нужны, а не исключать ненужные? Замучаешься ведь.

Deleted
()
Ответ на: комментарий от tanenn

воо tanenn
Твой пример помог.
нужно было просто строку исходную (из файла строки) сначала юникодом сделать.
Спасибо.

ossa ★★
() автор топика
Ответ на: комментарий от ossa

В python при работе с регэкспами всегда лучше в юникод делать преобразование. Экономит кучу времени на дебаге.

tanenn
()
Ответ на: комментарий от tanenn

Есть странное поведение.

вот такую строку
'esipiha, etupiha преддверие, передний двор'
ломает в:
'преддверие, передний дво��'
то есть вместо 'р' (0xD180 в utf8) записывается какая-то ерунда(0xEFBFBD, 0xEFBFBD)
следующую строку
'преддверие, передний двор'
Отдает как есть
паттерн такой:
pattern = re.compile(ur'([^a-zA-zÄäÖöÅå~\[\]\/.;]+)', re.U)

Есть идеи откуда пришла эта 0xEFBFBD?

ossa ★★
() автор топика
Ответ на: комментарий от tanenn

Сейчас. не могу поймать. Это не всегда происходит. Если просто 1-2 строки проверять, то все нормально. Сейчас еще покопаю.

ossa ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.