Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 주어진 문자열이 유효한 식별자인지 확인하는 방법

변수 이름처럼 식별자(identifier) 역할을 하는 문자열이 있을 때, 이것이 파이썬에서 유효한 식별자인지 판별해야 하는 경우가 있습니다. 유효성은 다음 세 가지 기준으로 판단할 수 있습니다.

  • 첫 번째 문자는 반드시 밑줄(_) 또는 영문 대소문자로 시작해야 합니다.
  • 문자열에 공백(whitespace)이 포함되어서는 안 됩니다.
  • 첫 문자 이후의 모든 문자는 $, #, % 같은 특수 문자를 포함해서는 안 되며, 숫자와 밑줄만 사용할 수 있습니다.

이 세 가지 조건을 모두 만족할 때에만 해당 문자열은 유효한 식별자로 인정됩니다.

예를 들어 입력이 id = "_hello_56"이라면, 첫 문자가 밑줄로 시작하고 나머지 문자들이 모두 알파벳·숫자·밑줄로 구성되어 있으므로 결과는 True가 됩니다.

해결 접근 방법

이 문제는 다음 단계를 따라 해결할 수 있습니다.

  • 문자열 s의 첫 번째 문자가 알파벳도 아니고 밑줄(_)도 아니라면 False를 반환합니다.
  • 두 번째 문자부터 마지막 문자까지 각 문자 ch를 순회하면서 다음을 검사합니다.
    • ch가 영숫자(alphanumeric)가 아니고 밑줄도 아니라면 False를 반환합니다.
  • 모든 검사를 통과하면 True를 반환합니다.

예제 코드

def solve(s):
    if not s[0].isalpha() and s[0] != '_':
        return False

    for ch in s[1:]:
        if not ch.isalnum() and ch != '_':
            return False

    return True

id = "_hello_56"
print(solve(id))

입력

"_hello_56"

출력

True

참고: 내장 메서드 isidentifier() 활용하기

파이썬은 문자열 객체에 isidentifier()라는 내장 메서드를 제공합니다. 이 메서드를 사용하면 위와 같은 로직을 직접 구현하지 않고도 한 줄로 동일한 결과를 얻을 수 있습니다.

id = "_hello_56"
print(id.isidentifier())  # True

다만 isidentifier()는 유니코드 규칙까지 고려하여 판별하므로, 한글 등 비ASCII 문자도 유효한 식별자로 처리한다는 점을 참고하면 좋습니다. 직접 구현한 solve() 함수는 문제의 조건(영문 대소문자, 숫자, 밑줄만 허용)에 맞게 동작합니다.