HOWTO · Python

파이썬 if 문에서 문자열 비교하기

파이썬 if 문에서 ==로 문자열 내용을 비교하고, in으로 부분 문자열이나 허용된 응답을 확인하는 방법을 알아봅니다. 대소문자를 무시하는 비교와 여러 조건을 결합하는 예제도 살펴봅니다.

이 페이지의 내용

문자열의 내용이 같은지 확인하려면 ==를, 문자열 안에 특정 부분 문자열이 있는지 또는 입력이 허용된 응답 중 하나인지 확인하려면 in을 사용하세요. 대소문자를 구분하지 않아야 할 때는 lower() 같은 메서드로 값을 정규화할 수 있습니다. 문자열 비교는 기본적으로 대소문자를 구분하며, is는 문자열 내용이 아니라 객체의 동일성을 확인합니다.

기본 문자열 비교

두 문자열의 내용이 같아야 한다면 ==를, 달라야 한다면 !=를 사용합니다. 비교식의 양쪽에 쓰는 이름은 조건을 평가하기 전에 모두 정의되어 있어야 합니다. 자세한 비교 방법은 파이썬 문자열 비교에서 확인할 수 있습니다.

다음 예제는 이름이 특정 값과 일치하는지 확인합니다.

name = "Alice"
if name == "Alice":
    print("Hello, Alice!")
else:
    print("You're not Alice.")

파이썬은 대소문자를 구분하므로 "Alice" == "alice"는 거짓입니다. 내용이 아니라 길이를 비교해야 한다면 len()을 사용할 수도 있습니다.

word1 = "Python"
word2 = "Programming"
if len(word1) < len(word2):
    print(f"{word1} is shorter than {word2}")
else:
    print(f"{word1} is not shorter than {word2}")

<, >, <=, >= 연산자는 문자열을 유니코드 코드 포인트의 사전식 순서로 비교합니다. 단어의 의미나 모든 언어에서의 알파벳순 정렬을 판단하는 것은 아닙니다. 사용자에게 보여 줄 정렬 결과가 필요하다면 로캘을 고려하는 적절한 정렬 방식을 사용하세요.

문자열에서 in 키워드 사용하기

문자열에 in을 적용하면 왼쪽 문자열이 오른쪽 문자열의 부분 문자열로 포함되어 있는지 확인합니다. 이 비교는 대소문자를 구분하며, 일치하는 부분이 별도의 단어일 필요는 없습니다.

sentence = "Python is awesome"
if "awesome" in sentence:
    print("The sentence contains 'awesome'")

입력이 여러 허용 문자열 중 하나와 정확히 일치하는지 확인하려면 컬렉션을 사용합니다. 아래 예제는 멤버십을 확인하기 전에 사용자 응답을 소문자로 정규화합니다.

user_input = "y"
if user_input.lower() in ["y", "yes", "yeah"]:
    print("User agreed")
else:
    print("User did not agree")

부분 문자열 확인과 관련 패턴은 파이썬에서 문자열에 다른 문자열이 포함되어 있는지 확인하기를 참고하세요. 반복해서 나타나는 부분을 찾는 방법은 문자열에서 문자의 모든 발생 위치 찾기에서 확인할 수 있습니다.

대소문자를 구분하지 않는 문자열 비교

비교에서 대소문자를 무시해야 할 때는 양쪽 값을 정규화하세요. 간단한 일치 검사에는 lower()를 흔히 사용하고, 유니코드 텍스트를 더 폭넓게 대소문자 구분 없이 비교하려면 casefold()를 사용할 수 있습니다. 정규화는 비교 방식을 바꾸므로, 대소문자를 무시해야 하는 작업에만 적용하세요.

user_input = "YES"
if user_input.lower() == "yes":
    print("Affirmative response received")

같은 방법으로 멤버십도 확인할 수 있습니다.

color = "RED"
if color.lower() in ["red", "blue", "green"]:
    print("Color accepted")
else:
    print("Color not accepted")

간단한 대소문자 변환에는 lower() 또는 upper()를 사용하세요. 더 많은 예제는 파이썬에서 문자열을 소문자 또는 대문자로 변환하기를 참고하세요.

고급 문자열 비교

애너그램 판별

문자들을 정렬하면 두 문자열에 같은 문자가 같은 수만큼 들어 있는지 간단히 확인할 수 있습니다.

word1 = "listen"
word2 = "silent"
if sorted(word1) == sorted(word2):
    print("The words are anagrams")

이 방식에서는 대문자와 소문자를 서로 다른 문자로 취급하며 공백과 문장 부호도 비교에 포함합니다. 이런 문자를 무시해야 한다면 먼저 문자열을 정규화하거나 해당 문자를 걸러 내세요.

문자열 메서드 사용하기

startswith()와 endswith() 같은 메서드는 접두사와 접미사를 확인하려는 의도를 직접 표현합니다.

filename = "document.txt"
if filename.endswith(".txt"):
    print("Text file detected")

여러 조건 결합하기

and, or, not을 사용해 조건을 결합할 수 있습니다. and로 연결한 모든 조건이 참이어야 전체 조건이 참입니다.

name = "John Doe"
if name.startswith("John") and " " in name:
    print("Name matches the expected format")

이는 간단한 텍스트 검사일 뿐, 가능한 모든 이름 형식을 검증하지는 않습니다.

객체 동일성 비교

is는 두 이름이 같은 객체를 가리키는지 확인합니다. 문자열의 내용이 같은지 비교할 때는 ==를 사용하세요. 객체 동일성은 텍스트가 같은지 판단하는 믿을 만한 방법이 아닙니다.

first = "Python"
second = "Python"
if first == second:
    print("The strings have equal contents")

결론

문자열 내용 비교에는 == 또는 !=를, 부분 문자열이나 컬렉션의 멤버십 확인에는 in을 사용하세요. 대소문자가 중요하지 않을 때는 값을 정규화하고, 접두사와 접미사를 확인할 때는 문자열 메서드를 활용할 수 있습니다. 텍스트의 동일성을 비교하려면 ==를 사용하세요. is는 객체 동일성이라는 다른 질문에 답합니다.

자주 묻는 질문

파이썬의 문자열 비교는 대소문자를 구분하나요?

네. 기본적으로 "Python"과 "python"은 서로 다른 문자열입니다. 대소문자를 무시해야 한다면 두 값을 정규화하세요.

if 문에서 여러 문자열 조건을 확인할 수 있나요?

네. 조건을 and나 or로 연결할 수 있습니다. 의도한 묶음이 더 분명해진다면 괄호를 사용하세요.

==와 is는 어떻게 다른가요?

==는 값을 비교하고, is는 두 참조가 같은 객체를 가리키는지 확인합니다. 문자열 내용 비교에는 ==를 사용하세요.

문자열이 특정 텍스트로 시작하거나 끝나는지 어떻게 확인하나요?

startswith() 또는 endswith()를 호출하세요. 예를 들어 filename.endswith(".txt")는 파일 이름이 .txt로 끝나는지 확인합니다.

정규식을 if 조건에서 사용할 수 있나요?

네. 패턴으로 일치 여부를 판단해야 한다면 조건식에서 re.search(pattern, text)처럼 파이썬 re 모듈의 함수를 호출하면 됩니다. 간단한 부분 문자열 확인에는 보통 in이 더 직접적입니다.