Python - 检查字符串是否包含西里尔字符

时间:2018-01-14 23:34:17

标签: python string

如何检查字符串是否包含西里尔字符?

E.g。

import random

def rand_walk():
    walk = 0
    for i in range(9): 
        rand = random.randint(0,1)
        if(rand == 0):
            walk = walk + 1
        else:
            walk = walk - 1 
    return walk


absolute = 0.0
numtrial = 100

for j in range(numtrial):
    walk = rand_walk()
    absolute = absolute + (walk**2)**(1/2.0)

print "Average Absolute Distance ", absolute/numtrial

4 个答案:

答案 0 :(得分:8)

您可以使用正则表达式检查字符串是否包含>>> has_cyrillic('Hello, world!') False >>> has_cyrillic('Привет, world!') True 范围内的字符:

а-я, А-Я

或者,您可以匹配whole Cyrillic script range

import re 

def has_cyrillic(text):
    return bool(re.search('[а-яА-Я]', text))

这也将匹配扩展的西里尔字母(例如ё,Є,ў)的字母。

答案 1 :(得分:4)

regex支持Unicode属性以及一些简短形式。

>>> regex.search(r'\p{IsCyrillic}', 'Hello, world!')
>>> regex.search(r'\p{IsCyrillic}', 'Привет, world!')
<regex.Match object; span=(0, 1), match='П'>
>>> regex.search(r'\p{IsCyrillic}', 'Hello, wёrld!')
<regex.Match object; span=(8, 9), match='ё'>

答案 2 :(得分:0)

建议一种方法,比此处讨论的方法要快。

方法#1:

len("экономия3r4".encode("ascii", "ignore")) > len ("экономия3r4")

246 ns ± 7.76 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

如果有西里尔字母,将打印“ True”

方法2:

Max在先前的帖子中进行了讨论

import re

def has_cyrillic(text):
    return bool(re.search('[а-яА-Я]', text))

has_cyrillic("экономия3r4")

929 ns ± 20.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

答案 3 :(得分:-2)

你可以创建一个包含西里尔字母的set,然后检查字符串的每个字符:

cyrillic_letters = {....} # fill it with the cyrillic letters

def has_cyrillic(text):
    for c in text:
        if c in cyrillic_letters:
            return True
    return False