2014-10-12 2 views
0

문자열에 문자가 아닌 문자가 있는지 여부를 감지하는 함수를 작성하려면 어떻게해야합니까?문자열에 비 문자가 포함되어 있는지 감지

뭔가 같은 :

def detection(a): 
    if !"qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM" in a: 
     return True 
    else: 
     return False 
print detection("blablabla.bla") 
+1

"글자"의 정의에 따라 다릅니다. ASCII에만 관련된 것이라면 Martijn의 대답은 OK입니다. 하지만 유니 코드는 어떨까요? ä, é, ŝ 같은 문자가 문자가 아닌 문자입니까? –

답변

3

str.isalpha() method를 사용; 인 경우 True 만 반환합니다. 문자열의 문자는 모두 문자입니다. 결과를 not으로 무효화하십시오. 경우 object.isalpha() 반환 True (문자열의 문자) not object.isalpha() 반환 False, 그 반대 :

def detection(string): 
    return not string.isalpha() 

데모 :

>>> def detection(string): 
...  return not string.isalpha() 
... 
>>> detection('jfiopafbjk') 
False 
>>> detection('42jfiopafbjk') 
True 
>>> detection('jfiopafbjk42') 
True 
>>> detection('jfiop42afbjk') 
True 
+0

여기 팬. 당신은 바위 :-) – Nabin

+0

또는 그는 정규식을 사용할 수 있습니다.;) –

+3

@AvinashBabu : 아직 정규 표현식은 성능과 이해면에서 더 많은 비용이 드는 것입니다. –

1

하여 의사의 시도로 기록 될 수있는 방법은 다음과 같습니다

from string import ascii_letters 

def detection(s, valid=set(ascii_letters)): 
    """Whether or not s contains only characters in valid.""" 
    return all(c in valid for c in s) 

여기에는(O(1)) 멤버십 테스트를 효율적으로 제공하는 sets 문자열의 모든 문자 c을 평가하는 생성기식이 all 인 유효한 문자를 정의하려면을 사용하십시오.

이미 str.isalpha이 존재한다고 가정하면, 이것은 바퀴를 재발 명합니다.

관련 문제