Python 检查字符串是否具有希伯来文字符的正确方法

Python 检查字符串是否具有希伯来文字符的正确方法,python,ord,Python,Ord,希伯来语的unicode表示形式介于1424和1514之间(或十六进制0590到05EA) 我正在寻找一种正确的、最有效的、最具Python风格的方法来实现这一点 首先我想到了这个: for c in s: if ord(c) >= 1424 and ord(c) <= 1514: return True return False 对于s中的c: 如果作战需求文件(c)>=1424,作战需求文件(c)=1424,作战需求文件(c)=1424,作战需求文件(c

希伯来语的unicode表示形式介于1424和1514之间(或十六进制0590到05EA)

我正在寻找一种正确的、最有效的、最具Python风格的方法来实现这一点

首先我想到了这个:

for c in s:
    if ord(c) >= 1424 and ord(c) <= 1514:
        return True
return False
对于s中的c:
如果作战需求文件(c)>=1424,作战需求文件(c)=1424,作战需求文件(c)=1424,作战需求文件(c),您可以:

# Python 3.
return any("\u0590" <= c <= "\u05EA" for c in s)
# Python 2.
return any(u"\u0590" <= c <= u"\u05EA" for c in s)
#Python 3。
返回您可以执行的任何操作(“\u0590”:

# Python 3.
return any("\u0590" <= c <= "\u05EA" for c in s)
# Python 2.
return any(u"\u0590" <= c <= u"\u05EA" for c in s)
#Python 3。

返回任何(“\u0590”您的基本选项是:

  • 与包含字符范围的正则表达式匹配;或
  • 迭代该字符串,测试该字符在包含所有目标字符的字符串或集合中的成员身份,如果找到匹配项,则中断

  • 只有实际测试才能显示哪一个更快。

    您的基本选项是:

  • 与包含字符范围的正则表达式匹配;或
  • 迭代该字符串,测试该字符在包含所有目标字符的字符串或集合中的成员身份,如果找到匹配项,则中断

  • 只有实际测试才能显示哪个更快。

    使用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])
    

    使用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])
    

    尝试对要查找的字符范围使用正则表达式。尝试对要查找的字符范围使用正则表达式。这两种方法都比他已有的方法慢得多,根据定义的范围测试字符肯定比检查长约100个字符的字符串成员身份或正则表达式快得多x@lenik这是我见过的最差的回答。为了你的缘故,我希望你不要在办公室里拉它。@lenik:事实上,你错了。在我的测试中,正则表达式很容易是最快的。下一个最好的(也是更具Pythonic的)方法是推翻Marcin的建议2,所以你迭代希伯来文字符并测试字符串中的成员身份。数字:(显然,这有点取决于条件——我假设希伯来语字符在输入中相对较少,并且程序处理的字符串足够多,可以忽略设置成本)@lenik:我假设这个程序测试了足够多的字符串,这样就可以忽略创建集合的成本。此外,汉字不在一个连续的范围内,所以你需要对每个字符进行更复杂的范围检查。这两种方法都比他已有的要慢得多,根据定义的范围测试一个字符肯定比检查f更快或约100个字符长的字符串成员身份或针对regex@lenik这是我见过的最差的回答。为了你的缘故,我希望你不要在办公室里这样做。@lenik:事实上,你错了。在我的测试中,正则表达式很容易是最快的。其次是最好的(而且更像Pythonic)是为了推翻Marcin的建议2,所以你迭代希伯来字符并测试字符串中的成员资格。数字:(显然这取决于条件-我假设希伯来字符在输入中相对较少,并且程序处理的字符串足够多,可以忽略设置成本)@lenik:我假设程序测试的字符串足够多,可以忽略创建集合的成本。此外,汉字不在一个连续的范围内,因此需要对每个字符进行更复杂的范围检查。