SeouliteLab

[Python/파이썬] 문자열 위치(Index) 찾기 본문

프로그래밍

[Python/파이썬] 문자열 위치(Index) 찾기

Seoulite Lab 2024. 3. 4. 08:12

문자열에서 특정 문자 또는 부분 문자열의 위치를 찾는 것은 파이썬 프로그래밍에서 매우 일반적입니다. 문자열의 위치를 찾는 방법에 대해 자세히 알아보겠습니다.

1. 문자열에서 특정 문자의 첫 번째 위치 찾기

문자열에서 특정 문자의 첫 번째 위치를 찾을 때에는 find() 메서드나 index() 메서드를 사용할 수 있습니다.

text = "Hello, world!"
char = "o"

# find() 메서드 사용
position1 = text.find(char)
print("첫 번째 'o'의 위치:", position1)  # 출력 결과: 4

# index() 메서드 사용
position2 = text.index(char)
print("첫 번째 'o'의 위치:", position2)  # 출력 결과: 4

2. 문자열에서 특정 문자의 마지막 위치 찾기

문자열에서 특정 문자의 마지막 위치를 찾을 때에는 rfind() 메서드나 rindex() 메서드를 사용할 수 있습니다.

text = "Hello, world!"
char = "o"

# rfind() 메서드 사용
position1 = text.rfind(char)
print("마지막 'o'의 위치:", position1)  # 출력 결과: 8

# rindex() 메서드 사용
position2 = text.rindex(char)
print("마지막 'o'의 위치:", position2)  # 출력 결과: 8

3. 문자열에서 부분 문자열의 위치 찾기

문자열에서 특정 부분 문자열의 위치를 찾을 때에는 find() 메서드나 index() 메서드를 사용합니다. 이때, 부분 문자열이 여러 번 나타날 경우 첫 번째 등장하는 위치가 반환됩니다.

text = "Hello, world!"
substring = "world"

# find() 메서드 사용
position1 = text.find(substring)
print("'world'의 위치:", position1)  # 출력 결과: 7

# index() 메서드 사용
position2 = text.index(substring)
print("'world'의 위치:", position2)  # 출력 결과: 7

4. 문자열에서 부분 문자열의 모든 위치 찾기

문자열에서 특정 부분 문자열의 모든 위치를 찾을 때에는 반복문과 함께 find() 메서드나 index() 메서드를 사용합니다.

text = "Hello, world, hello, world!"
substring = "world"
positions = []

index = -1
while True:
    index = text.find(substring, index + 1)
    if index == -1:
        break
    positions.append(index)

print("'world'의 모든 위치:", positions)  # 출력 결과: [7, 20]

5. 문자열에서 특정 문자 또는 부분 문자열의 존재 여부 확인하기

문자열에 특정 문자 또는 부분 문자열이 포함되어 있는지 확인할 때에는 in 키워드를 사용합니다.

text = "Hello, world!"
substring = "world"

if substring in text:
    print("'world'가 존재합니다.")
else:
    print("'world'가 존재하지 않습니다.")

6. 예외 처리하기

만약 찾고자 하는 문자열이 존재하지 않을 때, index() 메서드는 ValueError를 발생시킵니다. 이를 예외 처리하여 프로그램이 중단되지 않도록 할 수 있습니다.

text = "Hello, world!"
char = "z"

try:
    position = text.index(char)
    print(f"'{char}'의 위치:", position)
except ValueError:
    print(f"'{char}'는 존재하지 않습니다.")