if re.search('([^а-я])', 'ё').group(1) != None: print "Error"
Сорри не так if re.search('([^а-я])', 'ё') != None: print "Error"
Если вы не включимли локаль, то она туда действительно не входит. А если вы включили локаль то все работает. Пример следует. 18:18:58 (cray@fire) /home/cray/.home> python Python 2.3.3 (#1, Jul 3 2004, 17:16:23) [GCC 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import re >>> import locale >>> locale.setlocale(0,"ru_RU.KOI8-R") 'ru_RU.KOI8-R' >>> re.search('([^а-я])', 'ё').group(1) '\xa3' >>> print re.search('([^а-я])', 'ё').group(1) ё >>> map(ord,"аёя") [193, 163, 209] >>>
Не все так просто. Наверное я неправильно написал пример. В своей программе я использовал unicode, думаю на строки в этой кодировке не должны распространяться проблемы локали. Если же должны, то какую локаль мне поставить? >>> a = unicode ("[а-я]", "koi8-r"); >>> b = unicode ("ё", "koi8-r"); >>> re.compile (a, re.U ).match(b) >>> re.compile (a, re.U).match(unicode("е", "koi8-r")) <_sre.SRE_Match object at 0x403c68e0> >>> locale.setlocale(0,"ru_RU.KOI8-R") 'ru_RU.KOI8-R' >>> a = unicode ("[а-я]", "koi8-r"); >>> b = unicode ("ё", "koi8-r"); >>> re.compile (a, re.U).match(b) >>> re.compile (a, re.U).match(unicode("е", "koi8-r")) <_sre.SRE_Match object at 0x403c62f8>
> Не все так просто. Наверное я неправильно написал пример. В своей программе я Нет, это я неправильно ответил. Причем совсем неправильно - мой пример подтверждает вашу правоту, а не мою. Видимо, я перегрелся тогда, извините. Похоже на то, что модуль sre забивает на локализацию диапазонов. Баг это или фича - нужно разбираться. Локаль модуль учитывает только при расширении макросов: (\w и т.п.), я попробую провентилировать вопрос.
reassign
В документации по re нигде не сказано, что LOCALE влияет на диапазоны вида [а-я]. Более того, опыт показывает, что дмапазон _всегда_ строится по _кодам_ символов, а не по LOCALE, которое влияет только на \w и пободных ему. Так что это, увы, фича. Видимо, предполагается, что конструкции вида [ж-х] в real life бессмысленны, множества типа гласные/согласные лучше всё-таки задавать перечислением, а иметь возможность работать с _кодом_ символа в различных кодировках тоже хочется. Предлагаю багу закрыть.
re
worksforme
Bug is an error and the issue which prevail in the system and the file due to viral and the viral component attack as well. The bug is creating the reason of making the https://www.australian-writings.net/ by writing the debut making situation.