用于正则表达式的Python和Unicode块

时间:2010-06-29 22:26:50

标签: 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}的上述unicode块范围应为U + 30A0 ... U + 30FF。如何在Python中测试unicode范围?其他推荐的解决方案?

我不希望使用像Ponyguruma这样的外部包装器来限制转出/维护的依赖项数量。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

正如伊格纳西奥所说,表达非常有用。不要忘记先导入。此搜索仅查找全角片假名。

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

或者你可能已经有了一个字符串。

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