1. find()함수와 while 구문 활용
text = "pineapple"
char_to_find = "p"
indices = [text.find(char_to_find)]
while indices[-1] != -1:
indices.append(text.find(char_to_find, indices[-1] + 1))
indices.pop() # 마지막 -1 제거
print(f"'{char_to_find}'가 나타나는 위치: {indices}")
- indices = [text.find(char_to_find)]:
- 이 줄은 리스트 indices를 생성하고, 해당 리스트에 text 문자열에서 char_to_find 문자가 처음으로 나타나는 위치의 인덱스를 추가합니다.
- .find() 메서드는 문자열 내에서 지정된 문자의 첫 번째 위치를 찾아 해당 인덱스를 반환합니다.
- while indices[-1] != -1:
- 이 줄은 반복문을 시작합니다.
- indices[-1]은 리스트 indices의 마지막 요소를 의미합니다.
- -1은 .find() 메서드에서 해당 문자가 문자열에 없을 경우 반환되는 값입니다.
- 따라서, 이 조건은 문자열 내에서 더 이상 해당 문자가 나타나지 않을 때까지 반복을 계속하도록 합니다.
- indices.append(text.find(char_to_find, indices[-1] + 1)):
- 이 줄은 리스트 indices에 text 문자열에서 char_to_find 문자가 이전에 찾은 위치 이후로 나타나는 다음 위치의 인덱스를 추가합니다.
- indices[-1] + 1은 이전에 찾은 위치 이후부터 탐색을 시작하도록 합니다.
- indices.pop():
- 이 줄은 리스트 indices의 마지막 요소를 제거합니다. 이는 -1 값을 제거하는 역할을 합니다.
2. 정규 표현식 사용
import re
text = "pineapple"
char_to_find = "p"
indices = [match.start() for match in re.finditer(char_to_find, text)]
print(f"'{char_to_find}'가 나타나는 위치: {indices}")
- import re:
- 이 줄은 파이썬의 re 모듈을 가져오는 역할을 합니다.
- re 모듈은 정규 표현식을 사용하기 위해 필요한 기능을 제공합니다.
- text = "pineapple":
- 이 줄은 변수 text에 문자열 "pineapple"을 할당하는 역할을 합니다. 즉, text 변수에는 "pineapple"이라는 문자열이 저장됩니다.
- char_to_find = "p":
- 이 줄은 변수 char_to_find에 문자 "p"를 할당하는 역할을 합니다. 즉, char_to_find 변수에는 "p"라는 문자가 저장됩니다.
- indices = [match.start() for match in re.finditer(char_to_find, text)]:
- 이 줄은 리스트 indices를 생성하고, 해당 리스트에 text 문자열에서 char_to_find 문자가 나타나는 모든 위치의 인덱스를 추가합니다.
- re.finditer(char_to_find, text)는 정규 표현식을 사용하여 text 문자열에서 char_to_find 문자가 나타나는 모든 위치를 찾습니다.
- match.start()는 해당 위치의 시작 인덱스를 반환합니다.
- 따라서, 리스트 indices에는 'p’가 나타나는 모든 위치의 인덱스가 저장됩니다.
'파이썬' 카테고리의 다른 글
[Python] 참조(Reference) + 복사(Copy) (0) | 2024.07.05 |
---|---|
map()함수 (0) | 2024.06.09 |
lambda()함수 (0) | 2024.06.09 |
리스트 컴프리헨션(list comprehension) (0) | 2024.06.09 |
파이썬 복합 할당 연산자 (0) | 2024.05.28 |