Bloques Python y Unicode para expresiones regulares

Desde la tierra de Perl, puedo hacer algo como lo siguiente para probar la pertenencia de una cadena en un bloque Unicode en particular:

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

He leído que Python no admite bloques Unicode (¿verdad?). ¿Cuál es la mejor manera de implementar esto manualmente? Por ejemplo, el rango de bloque Unicode anterior para {InKatakana} debe ser U + 30A0… U + 30FF. ¿Cómo puedo probar el rango Unicode en Python? ¿Alguna otra solución recomendada?

Preferiría no ir con una envoltura externa como Ponyguruma para limitar el número de dependencias para el despliegue / mantenimiento.

 >>> re.search(u'[\u30a0-\u30ff]', u'カタカナ') <_sre.SRE_Match object at 0x7fa0dbb62578> 

Como dijo Ignacio, la re expresión es muy útil. No olvides la importación primero. Esta búsqueda solo encuentra katakana de ancho completo.

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

O quizás ya tengas una cuerda a mano.

 import re x = "カタカナ" re.search(u'[\u30a0-\u30ff]', x.decode('utf-8'))