Python 문자열 비교 방법 5가지

개발하다보면 문자열을 비교하는 일이 생깁니다. Python 문자열 비교 방법 5가지 살펴보겠습니다.

Python 문자열 비교 방법 5가지

문자열 비교하는 방법에는 여러 가지가 있습니다. 완전 일치, 문자열 크기 비교, 부분 일치, 전방일치, 후방일치 이렇게 5가지 방법에 대해서 살펴보겠습니다.

완전 일치 비교

문자열이 완전히 일치하는지 확인하는 비교 연산자는 ==이며, 그 반대로 완전히 일치하지 않는지는 != 연산자를 통해서 확인합니다.

is_same = "워드프레스" == "워드프레스"
is_same
is_same = "워드프레스" == "티스토리"
is_same
is_not_same = "워드프레스" != "티스토리"
is_not_same
is_not_same = "워드프레스" != "워드프레스"
is_not_same
Python

실행한 결과는 아래와 같습니다. 의도했던 결과들이었기 때문에 True가 반환되었습니다.

그림 1. Python 문자열 비교: 완전 일치/불일치 확인 결과
그림 1. Python 문자열 비교: 완전 일치/불일치 확인 결과

문자열 크기 비교

보통 ‘보다 크다(>)’ 또는 ‘보다 작다(<)’ 연산자는 숫자를 비교할 때 주로 사용합니다. 하지만 문자열도 비교가 가능하다는 점 알고 계셨나요?

‘A’는 ‘B’보다 클까요? 작을까요?

‘A’는 ‘a’보다 클까요? 작을까요?

코드를 통해서 문자열 비교가 가능한 경우를 확인해 보겠습니다.

B_is_bigger = 'A' < 'B'
B_is_bigger
A_is_bigger = 'A' > 'a'
A_is_bigger
Python

위의 코드를 실행한 결과는 아래 그림과 같습니다.

그림 2. Python 문자열 비교: 문자열 크기 비교 1
그림 2. Python 문자열 비교: 문자열 크기 비교 1

그림 2에서 보시는 것과 같이 문자열도 비교가 가능합니다. ‘A’는 ascii 코드로 65, ‘a’는 97이므로 ‘a’가 ‘A’보다 큽니다. 이와 같이 문자열도 크기를 비교할 수 있습니다.

숫자로 된 문자열 ‘2009’와 ‘2010’을 비교할 일이 있다고 합시다. 그냥 문자열끼리 비교하면 됩니다. 번거롭게 int()로 감싸서 비교하지 않아도 됩니다. 단, 숫자 2009와 문자열 ‘2010’은 비교할 수 없습니다. Type이 다르다면 한 가지로 통일해서 비교해야 합니다.

그림 3. Python 문자열 비교: 문자열 크기 비교 2
그림 3. Python 문자열 비교: 문자열 크기 비교 2

부분 일치(특정 문자열 포함 비교)

부분 일치에 대한 정보는 포스팅 Python 문자열 포함 확인 방법 5가지에서 모든 것을 다루고 있으니 여기에서는 따로 설명하지 않겠습니다.

문자열 앞부분 일치: 전방일치, 접두어 일치(prefix)

문자열의 앞부분만 일치하는지를 확인할 필요가 있을 때 str.startswith() 메서드를 사용합니다. 코드를 통해 바로 살펴보겠습니다.

a = '02-123-4567'
a.startswith('02')
a.startswith('010')
Python

전화번호가 02로 시작하는지 010으로 시작하는지 확인해 보았습니다. 02로 시작하므로 True를 반환했으며, 010으로 시작하지 않으므로 False가 반환되었습니다.

그림 4. Python 문자열 비교: 전방 일치 결과
그림 4. Python 문자열 비교: 전방 일치 결과

문자열 뒷부분 일치: 후방일치, 접미어 일치(suffix)

문자열의 뒷부분만 일치하는지를 확인할 필요가 있을 때에는 str.endswith() 메서드를 사용합니다. 마찬가지로 코드를 통해 바로 살펴보겠습니다.

a = '김나루 교수'
a.endswith("선생님")
a.endswith("교수")
Python

아래 그림에서 문자열이 선생님으로 끝나지 않으므로 False, 교수로 끝났으므로 True가 반환된 것을 확인할 수 있습니다.

그림 5. Python 문자열 비교: 후방 일치 결과
그림 5. Python 문자열 비교: 후방 일치 결과

startswith, endswith 꿀팁!

꿀팁 방출합니다!

공식 도큐먼트에 나와 있는 startswith와 endswith 사용법을 확인해 보겠습니다.

str.startswith(prefix[, start[, end]])
str.endswith(suffix[, start[, end]])

startswith와 endswith는 추가로 파라미터값을 갖습니다. 바로 start와 end입니다. 주어진 문자열 중에서 시작점과 끝점을 지정해서 그 기준으로 앞부분이 일치하는지, 뒷부분이 일치하는지 확인할 수 있는 기능입니다.

substring을 한 후에 prefix나 suffix을 비교하는 것과 동일한 기능을 제공합니다. 어떤 경우에 사용할 수 있는지 확인해 보도록 하겠습니다.

가끔은 제일 앞글자를 제외하고 일치하는지를 확인해야 할 때가 있습니다. 그럴 땐 시작점을 index 값으로 지정해 주면 됩니다.

a = '김나루 교수'
a.startswith('나루', 0)
a.startswith('나루', 1)
Python

두번째 파라미터 start에 1값을 넣어준 경우에 True가 반환된 것을 확인할 수 있습니다. 특정 위치부터 시작되는 문자열을 확인하고 싶을 때에는 두번째 파라미터 start에 index 값을 넣어주면 됩니다.

그림 6. Python 문자열 비교: str.startswith() 메서드에서 start 파라미터 추가 사용
그림 6. Python 문자열 비교: str.startswith() 메서드에서 start 파라미터 추가 사용

이번에는 뒤에 공백을 포함해서 직함까지 3글자를 제외하고 ‘나루’로 끝나는지를 확인하고 싶다면 다음과 같이 작성하면 됩니다.

a = '김나루 교수'
a.endswith('나루', 0, -3)
Python

start와 end값으로 각각 0, -3을 사용했으므로 ‘김나루’라는 문자열이 비교 대상이 되며 해당 문자열은 ‘나루’로 끝나므로 True를 반환하게 됩니다.

그림 7. Python 문자열 비교: str.endswith() 메서드에서 start, end 파라미터 추가 사용
그림 7. Python 문자열 비교: str.endswith() 메서드에서 start, end 파라미터 추가 사용

정리

문자열을 다루다 보면 다양한 경우들이 많이 발생합니다. 위와 같은 문자열 비교 방법들을 참고해서 효율적으로 작업해 보시길 바랍니다.

관련 자료

Python의 Built-in Types의 String methods 부분을 참고했습니다.

같이 읽으면 좋은 글

Leave a Comment