Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 삼성 싸피 지원
- 학생메일
- 그램 액정 교체비용
- 삼성 싸피
- LG 서비스센터 영업시간
- 싸피 추천코드
- 폰 위치추적
- 정처기 실기
- gram 액정 교체
- 싸피 모집설명회
- 싸피 11기
- 정처기 후기
- 봄 노래
- 정보처리기사 준비물
- 정보처리기사 실기
- 폰 도난
- 정처기 인강 추천
- 코딩테스트실력진단
- 싸피 지원자격
- 코드트리
- 싸피 추천인
- 인디노래 추천
- 코딩테스트
- 갤럭시 위치추적
- 폰 잃어버렸을때
- 싸피 혜택
- SSAFY
- #코드트리 #코딩테스트 #코딩테스트실력진단
- 싸피 모집설명회 다시보기
- 폰 찾기
Archives
- Today
- Total
포포's 코딩&일상 기록
파이썬] 문자열.index() 와 문자열.find() 함수/메소드 본문
문자열 s에 특정 문자열 'ab'가 어느 위치에 포함되어 있는지를 어떻게 알 수 있을까요? 만약 포함되어 있지 않는다면 -1을 출력하며, 여러 번 나타난다면 가장 앞선 위치를 찾는 문제라고 가정해봅시다.
논리적으로 접근한다면, 각각의 위치에 대해 조사하며 그 중 정확히 'ab'와 일치하는 위치가 있었는지를 확인해야 합니다. 이때 for loop을 [0, length - 2] 에서만 돌아야 함에 유의합니다. 이는 비교시에 i + 1 위치의 문자를 조회하기 때문입니다.
s = 'appleabanana'
length = len(s)
start_idx = -1
for i in range(length - 1):
if s[i] == 'a' and s[i + 1] == 'b':
start_idx = i
break
print(start_idx)
하지만 python에서는 index이라는 키워드를 제공합니다. index 함수 이용시 유의해야 할 점은, 부분 문자열이 없는 경우에는 다음과 같이 ValueError가 발생한다는 것입니다.
s = 'appleabanana'
print(s.index('bbb'))
>> ValueError: substring not found
따라서 index 함수는 꼭 in 키워드와 함께 사용해야 합니다. in으로 미리 부분문자열이 있는지 확인하고, 있다면 해당 위치를 찾는 식으로 진행하면 됩니다. 이때 부분문자열이 여러 개 있는 경우라면, 가장 앞선 위치를 반환해줍니다.
s = 'appleabanana'
if 'ab' in s:
print(s.index('ab'))
else:
print(-1)
>> 5
python의 문자열에서는 find()라는 함수를 제공하여 위의 문제를 더 간단히 해결할 수 있습니다. 이 함수는 해당 부분 문자열이 없는 경우에는 -1을, 있는 경우에는 가장 앞에 나오는 부분 문자열의 위치를 반환해주므로 정확히 저희과 원하는 함수입니다. 따라서 다음과 같이 간결하게 해결이 가능합니다.
s = 'appleabanana'
print(s.find('bob'))
>> -1