본문 바로가기

Language/Python

[Python] 특정 문자의 위치 찾기 - find(), rfind(), index()

이번에는 특정 문자가 몇 번째 위치에 있는지 찾아볼게요.

위에서 사용했던 “Hello World.”를 다시 사용해볼게요.

이 문장에서 ‘W’는 몇 번째에 있을까요? 공백(띄어쓰기)과 특수문자를 포함해주세요.

 

세어봤나요? 몇 번째 인가요? 문장의 7번째 글자가 ‘W’네요.

그럼 파이썬을 이용해서 W를 찾아볼까요?

먼저 파이썬에서 제공하는 find() 함수를 이용해볼게요.

 

hello_str = 'Hello World.'
print(hello_str.find('W'))
>> (출력) 6

 

잉? 분명 손으로 세어봤을 때는 7번째 글자인데 왜 6이 나올까요?

여러분들은 제일 첫 글자인 H를 1번으로 세었을 거에요.

하지만 컴퓨터는 0번째, 1번째… 이렇게 세기때문에 ‘W’가 6번째에 있다고 알려주는 거에요.

그럼 컴퓨터처럼 세어볼까요?

 

문자 H e l l o   W o r l d .
순서 번호 0 1 2 3 4 5 6 7 8 9 10 11

 

이제 아시겠죠?

그런데 만약 문장에 없는 글자를 찾으면 어떻게 될까요?

 

hello_str = 'Hello World.'
print(hello_str.find('a'))
>> (출력) -1

 

문장에 ‘a’라는 문자가 없네요.

그럼 컴퓨터는 문자를 찾지 못했다는 의미로 -1이라는 숫자를 알려준답니다.

이 부분을 잘 기억해주세요!

 

그리고 하나 더! find()는 문자열 앞(왼쪽)에서부터 찾아요.

그런데 파이썬에서는 rfind()라는 함수를 하나 더 제공해서 문자열 뒤(오른쪽)에서부터 찾을 수 있게 해줘요!

이 부분도 참고하세요!

 

 

아! 그리고 문자열에서 특정 문자의 위치를 찾는 함수는 find() 말고도 하나 더 있어요.

바로 index()라는 함수인데요.

사용 방법은 find()와 똑같아요.

 

1 hello_str = 'Hello World.'
2 print(hello_str.index('W'))
3 print(hello_str.index('a'))
  >> (출력) 6
  >> (출력) Traceback (most recent call last): File "....", line 3, in <module>
              print(hello_str.index('a'))
            ValueError: substring not found

 

index()를 통해 ‘W’를 찾았더니 find()와 똑같이 6이라고 알려주네요.

대신에 문장에 없는 글자를 찾을 때“ValueError: substring not found”라는 문장과 함께

문자를 찾을 수 없다고 에러를 알려주고 있어요.

이 부분에서 find() 함수와 차이가 있네요.

이 차이점을 잘 고려해서 find()를 사용할지 index()를 사용할지 결정하면 되요.

 

아! 참고로 대소문자를 구분하기 때문에 소문자인 ‘w’를 찾으려하면 에러가 나기 때문에 조심해주세요.

(물론 find() 함수에서는 -1이 나올거에요.)