데이터분석 기록일지

파이썬

파이썬 문자열 2개 이상 위치 찾아내기

야하루 2024. 5. 28. 17:09

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}")
  1. indices = [text.find(char_to_find)]:
    • 이 줄은 리스트 indices를 생성하고, 해당 리스트에 text 문자열에서 char_to_find 문자가 처음으로 나타나는 위치의 인덱스를 추가합니다.
    • .find() 메서드는 문자열 내에서 지정된 문자의 첫 번째 위치를 찾아 해당 인덱스를 반환합니다.
  2. while indices[-1] != -1:
    • 이 줄은 반복문을 시작합니다.
    • indices[-1]은 리스트 indices의 마지막 요소를 의미합니다.
    • -1은 .find() 메서드에서 해당 문자가 문자열에 없을 경우 반환되는 값입니다.
    • 따라서, 이 조건은 문자열 내에서 더 이상 해당 문자가 나타나지 않을 때까지 반복을 계속하도록 합니다.
  3. indices.append(text.find(char_to_find, indices[-1] + 1)):
    • 이 줄은 리스트 indices에 text 문자열에서 char_to_find 문자가 이전에 찾은 위치 이후로 나타나는 다음 위치의 인덱스를 추가합니다.
    • indices[-1] + 1은 이전에 찾은 위치 이후부터 탐색을 시작하도록 합니다.
  4. 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}")
  1. import re:
    • 이 줄은 파이썬의 re 모듈을 가져오는 역할을 합니다.
    • re 모듈은 정규 표현식을 사용하기 위해 필요한 기능을 제공합니다.
  2. text = "pineapple":
    • 이 줄은 변수 text에 문자열 "pineapple"을 할당하는 역할을 합니다. 즉, text 변수에는 "pineapple"이라는 문자열이 저장됩니다.
  3. char_to_find = "p":
    • 이 줄은 변수 char_to_find에 문자 "p"를 할당하는 역할을 합니다. 즉, char_to_find 변수에는 "p"라는 문자가 저장됩니다.
  4. 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