python isalpha(), isdigit()

Y·2023년 7월 12일
0

백준 1431번을 풀면서 해당 문자열이 문자인지 숫자인지 판별할 필요가 있었다. 파이썬에서는 isalpha()와 isdigit()를 활용해서 숫자인지 문자인지 판별할 수 있다.

숫자 판별에 쓰이는 함수는 isdecimal(), isdigit(), isnumeric() 이 있다.

  • isdecimal()은 int로 변환이 가능한 경우(공식문서에 따르면 문자열 내의 모든 문자가 십진수 문자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 십진수 문자는 십진법으로 숫자를 구성할 때 사용될 수 있는 문자들입니다.)
  • isdigit()는 숫자의 형태인 경우(3²와 같은 표현 가능. 분수,소수,음수는 안됨, 공식문서에 따르면 문자열 내의 모든 문자가 십진수 문자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 디짓에는 십진수 문자와 호환성 위 첨자 숫자와 같은 특수 처리가 필요한 숫자가 포함됩니다. 여기에는 카로슈티 숫자처럼 십진법으로 숫자를 구성할 때 사용될 수 없는 것들이 포함됩니다. 형식적으로, 디짓은 속성값이 Numeric_Type=Digit 또는 Numeric_Type=Decimal인 문자입니다.)
  • isnumeric()은 숫자값 표현에 해당하는 경우(3²와 같은 표현 가능, ⅔와 같은 표현도 가능, 소수,음수 안됨. 공식문서에 따르면 문자열 내의 모든 문자가 숫자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 숫자는 디짓과 유니코드 숫자 값 속성을 갖는 모든 문자를 포함합니다.)이다.

대체로 isdigit()를 많이 쓰는듯 하다.

문자 판별에 쓰이는 함수는 isalpha() 이다. 공백이 있는 경우, 숫자와 혼용되는 경우에는 false를 반환한다. (공식문서에 따르면 문자열 내의 모든 문자가 알파벳이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 알파벳 문자는 유니코드 문자 데이터베이스에서 “Letter”로 정의된 문자입니다. 즉, 일반 범주 속성이 “Lm”, “Lt”, “Lu”, “Ll”, “Lo” 중 하나인 문자입니다. 이것은 유니코드 표준에서 정의된 “Alphabetic” 속성과 다름에 주의하십시오.) (여기서 Lm:Modifier_Letter, Lt:Titlecase_Letter, Lu:Uppercase_Letter, Ll:Lowercase_Letter, Lo:Other_Letter)

숫자(⅔, 3²와 같은 표현도 가능)와 문자가 같이 있는 경우(공식문서에 따르면 문자열 내의 모든 문자가 알파벳과 숫자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 문자 c 는 다음 중 하나가 True 를 반환하면 알파벳이거나 숫자입니다: c.isalpha(), c.isdecimal(), c.isdigit(), c.isnumeric().) 는 isalnum() 을 사용할 수 있다. 하지만 이 경우도 공백이 포함되면 false를 반환한다.

숫자/문자의 기준이 글로만 읽었을 때는 조금 모호하게 보이는데, 알고리즘 문제 풀때는 숫자 판정은 isdigit(), 문자 판정은 isalpha()쓰면 될 듯 하다.

profile
개발자, 학생

0개의 댓글