Как искать регулярное выражение на иврите (Python 2.7)

Я хочу найти что-нибудь с ре на иврите:

page = urlopen(url)
page_content = page.read()
founds = re.findall("מילים בעברית", page_content)

ошибка: SyntaxError: не-ASCII-символ '\xec' в файле C:/Users/User/untitled/milimBeIvrit.py в строке 12, но кодировка не объявлена; см. http://python.org/dev/peps/pep-0263/ для подробности


person Aluma Gelbard    schedule 01.01.2016    source источник
comment
Вы пытались объявить кодировку, как это предлагается в связанном PEP?   -  person Arcturus B    schedule 01.01.2016
comment
я попробовал это, код запускается сейчас, но на самом деле не работает :(   -  person Aluma Gelbard    schedule 01.01.2016
comment
Пожалуйста, проверьте, работает ли это мое решение для вас.   -  person Wiktor Stribiżew    schedule 01.01.2016


Ответы (2)


Да, re может обрабатывать utf-8 строк.

Вы можете изменить кодировку по умолчанию, если хотите (но это не обязательно)

>>> import sys
>>> import re
>>> sys.getdefaultencoding()
'ascii'

Моя кодировка по умолчанию — ascii, и все еще работает следующее:

>>> a='אבא בא'
>>> results = re.findall("א", a)
>>> results
['\xd7\x90', '\xd7\x90', '\xd7\x90']

Для печати в удобочитаемом формате используйте print:

>>> for r in results:
...     print r

א
א
א

Обратите внимание, что idle имеет некоторые проблемы с обработкой utf8, поэтому можно рассмотреть возможность использования IDE, например PyCharm.

person 0x90    schedule 01.01.2016

Вы не говорите, это Python 2 или 3.... Если Python 2 - то придется играться с кодированием и декодированием, а родного юникода нет.

Однако в Python 3 - я бы сделал это так... Извините, я не могу хорошо работать с ивритом - вместо этого небольшой арабский пример... но принцип тот же.

import re
sentance='المتساقطة، تحت. من كردة مسارح قُدُماً ضرب, لان بشكل أكثر'
fs=re.search('لان', sentance)
if fs:
   print("Found it")

Я понятия не имею, что такое арабское выражение — я взял его с http://generator.lorem-ipsum.info/_arabic.

Я должен подчеркнуть - текст Unicode прост в Python3, но гораздо сложнее в Python 2....

Точно так же, как мой арабский пример - с использованием ивритских знаний-ipsum (о существовании которых я не знал до 30 секунд назад).

import re
sen2="רביעי ביולוגיה את אתה. מתן של מיזם המלצת ליצירתה, גם שכל חשמל אדריכלות למתחילים. צילום הבאים בעברית אחד בה. בדף או ריקוד מונחים לחשבון, ב הקהילה רב־לשוני זכר, וספציפיים האנציקלופדיה אל חפש. מתן אל נפלו עזרה אנתרופולוגיה."
fs=re.search('בדף',sen2)
if fs:
   print("Found it")

Мне кажется нормально....

person Tim Seed    schedule 01.01.2016