이번에는 특정 문자가 몇 번째 위치에 있는지 찾아볼게요.
위에서 사용했던 “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이 나올거에요.)
'Backend > Python' 카테고리의 다른 글
[Python] 대문자, 소문자 바꾸기 - upper(), lower() (0) | 2022.06.03 |
---|---|
[Python] 문자 삽입 - join() (0) | 2022.06.03 |
[Python] 문자 개수 세기 - count() (0) | 2022.06.03 |
[Python] 문자열 포매팅 (0) | 2022.05.23 |
[Python] 문자열 연산 (0) | 2022.05.23 |