正则表达式的Python和Unicode块

正则表达式的Python和Unicode块,python,regex,unicode,Python,Regex,Unicode,来自Perl之地,我可以执行如下操作来测试特定unicode块中字符串的成员身份: # test if string has any katakana script characters my $japanese = "カタカナ"; if ($japanese =~ /\p{InKatakana}/) { print "string has katakana" } 我已经读到Python不支持unicode块(真的?),那么手动实现这一点的最佳方法是什么呢?例如,{InKatakana}

来自Perl之地,我可以执行如下操作来测试特定unicode块中字符串的成员身份:

# test if string has any katakana script characters
my $japanese = "カタカナ";
if ($japanese =~ /\p{InKatakana}/) {
   print "string has katakana"
}
我已经读到Python不支持unicode块(真的?),那么手动实现这一点的最佳方法是什么呢?例如,{InKatakana}的上述unicode块范围应为U+30A0…U+30FF。如何在Python中测试unicode范围?还有其他推荐的解决方案吗

我不希望使用外部包装器来限制推出/维护依赖项的数量

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

正如Ignacio所说,重新表达非常有用。不要忘记先导入。此搜索只查找全幅片假名

import re  
re.search(u'[\u30a0-\u30ff]', u'カタカナ')  
或者你手头可能已经有一根绳子了

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