Блоки Python и Unicode для регулярных выражений - PullRequest
2 голосов
/ 30 июня 2010

Исходя из земли Perl, я могу сделать что-то вроде следующего, чтобы проверить членство строки в определенном блоке Unicode:

# test if string has any katakana script characters
my $japanese = "カタカナ";
if ($japanese =~ /\p{InKatakana}/) {
   print "string has katakana"
}

Я читал, что Python не поддерживает юникодные блоки (правда?) - так как лучше всего выполнить это вручную? Например, вышеуказанный диапазон блока Юникода для {InKatakana} должен быть U + 30A0… U + 30FF. Как я могу проверить диапазон Юникода в Python? Любые другие рекомендуемые решения?

Я бы предпочел не использовать внешнюю оболочку, например Ponyguruma , чтобы ограничить количество зависимостей для развертывания / обслуживания.

Ответы [ 2 ]

6 голосов
/ 30 июня 2010
>>> re.search(u'[\u30a0-\u30ff]', u'カタカナ')
<_sre.SRE_Match object at 0x7fa0dbb62578>
2 голосов
/ 08 февраля 2011

Как сказал Игнасио, выражение re очень полезно. Не забудьте сначала импортировать. Этот поиск находит только ширину катакана.

import re  
re.search(u'[\u30a0-\u30ff]', u'カタカナ')  

Или у вас уже может быть строка под рукой.

import re  
x = "カタカナ"  
re.search(u'[\u30a0-\u30ff]', x.decode('utf-8'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...