希伯来语在1424年至1514年之间(或十六进制0590至05EA)具有unicode表示。
我正在寻找合适,最有效和最恐怖的方式来实现这一目标。
首先我想出了这个:
for c in s:
if ord(c) >= 1424 and ord(c) <= 1514:
return True
return False
然后我带来了一个更加优雅的实现:
return any(map(lambda c: (ord(c) >= 1424 and ord(c) <= 1514), s))
也许:
return any([(ord(c) >= 1424 and ord(c) <= 1514) for c in s])
哪些是最好的?或者我应该以不同的方式做到这一点?
答案 0 :(得分:16)
你可以这样做:
# Python 3.
return any("\u0590" <= c <= "\u05EA" for c in s)
# Python 2.
return any(u"\u0590" <= c <= u"\u05EA" for c in s)
答案 1 :(得分:1)
您的基本选择是:
只有实际测试可以显示哪个更快。
答案 2 :(得分:1)
使用unidcodedata检查第一个字符非常简单:
import unicodedata
def is_greek(term):
return 'GREEK' in unicodedata.name(term.strip()[0])
def is_hebrew(term):
return 'HEBREW' in unicodedata.name(term.strip()[0])