Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 문자열 메서드 완벽 가이드: 초보자를 위한 단계별 튜토리얼

Python에는 문자열 전용으로 사용되는 다양한 메서드가 있습니다. upper(), lower(), capitalize(), title() 등의 Python 문자열 메서드는 문자열을 조작하고 편집하며 다루는 데 매우 유용합니다.


문자열(String)이란?

문자열은 프로그래밍에서 사용되는 핵심 데이터 타입 중 하나로, 컴퓨터가 텍스트를 다룰 수 있게 해줍니다. 예를 들어 Python 프로그램에서 사용자의 이름이나 이메일 주소를 저장할 때 문자열을 활용할 수 있습니다.

Python은 문자열을 수정하고 조작할 수 있는 여러 내장 문자열 메서드를 제공합니다. 이러한 함수들은 Python에 기본으로 내장되어 있어 별도의 라이브러리를 가져오지 않고도 바로 사용할 수 있다는 장점이 있습니다.

이 튜토리얼에서는 Python에서 자주 접하게 되는 핵심 문자열 메서드들을 하나씩 살펴보고, 실제 활용 예제를 통해 그 사용법을 익혀보겠습니다.

문자열 기본 개념 복습

문자열은 프로그래밍 시 텍스트 값을 저장하는 데 사용되며, Python에서는 작은따옴표 '' 또는 큰따옴표 ""로 선언합니다. 두 따옴표 중 어느 것을 사용해도 무방하지만, 한 번 선택했다면 프로그램 전체에서 일관성 있게 사용하는 것이 좋습니다. 문자열 선언 예시는 다음과 같습니다.

"This is an example string in Python."

print() 함수를 사용하면 문자열을 화면에 출력할 수 있습니다.

print("This is an example string!")

실행 결과: This is an example string!

문자열을 다루다 보면 두 문자열을 합쳐 새로운 문자열을 만들어야 하는 경우가 생깁니다. 이를 프로그래밍에서는 '문자열 연결(concatenation)'이라고 부릅니다. 두 문자열을 연결하려면 + 연산자를 사용하면 됩니다.

print("Example" + "String")

실행 결과: ExampleString. 주의할 점은 문자열을 연결할 때 공백이 자동으로 포함되지 않는다는 것입니다. 공백을 넣고 싶다면 문자열 안에 직접 공백 문자를 추가해야 합니다.

문자열의 기본기를 다졌으니, 이제 본격적으로 Python 문자열 메서드를 알아보겠습니다.

대소문자 변환: upper()와 lower()

Python에서 가장 많이 사용되는 문자열 함수 중 두 가지가 바로 문자열의 대소문자를 변경하는 함수입니다. upper()lower() 함수는 원본 문자열의 모든 글자를 각각 대문자 또는 소문자로 변환한 새로운 문자열을 반환합니다.

중요한 점은 이 함수들을 사용하면 반환되는 값이 새로운 문자열이며, 기존 문자열은 그대로 유지된다는 것입니다.

다음은 upper() 메서드를 사용해 문자열을 대문자로 변환하는 예시입니다.

string_example = "String Example"
print(string_example.upper())

실행 결과:

"STRING EXAMPLE"

반대로 소문자로 변환하고 싶다면 lower() 함수를 사용하면 됩니다.

print(string_example.lower())

실행 결과:

"string example"

또한 capitalize() 메서드는 문자열의 첫 글자만 대문자로 만들고, title() 메서드는 문자열 내 모든 단어의 첫 글자를 대문자로 변환합니다.

이러한 함수들은 문자열을 비교할 때 대소문자 형식을 일관되게 유지해야 하는 경우 특히 유용합니다. Python에서 문자열 비교는 대소문자를 구분하기 때문입니다. 예를 들어, 사용자가 입력한 이메일 주소를 소문자로 변환한 후 파일에 저장된 이메일과 비교하는 식으로 활용할 수 있습니다.

문자열 길이 구하기: len()

문자열을 다루다 보면 해당 문자열의 길이를 확인해야 할 때가 있습니다. Python의 len() 메서드를 사용하면 문자열에 포함된 문자 개수를 반환받을 수 있습니다.

이 함수는 예를 들어 폼 필드에 최소 또는 최대 길이 제한을 설정할 때 유용합니다. 사용자의 이메일 주소가 50자를 넘지 않아야 한다면, len()으로 이메일 길이를 확인하고 50자를 초과할 경우 오류 메시지를 표시하도록 구현할 수 있습니다.

다음은 문자열의 길이를 확인하는 프로그램 예시입니다.

string_length = "What is the length of this string?"
print(len(string_length))

실행 결과: 34. 코드에서는 변수 string_length에 문자열을 저장한 뒤, 다음 줄에서 len(string_length) 메서드로 문자열의 길이를 구하고, print() 메서드를 통해 콘솔에 출력했습니다.

주의할 점은 len() 함수가 문자열 내 모든 문자를 센다는 것입니다. 여기에는 영문자, 숫자, 공백 문자까지 모두 포함됩니다.

불리언(Boolean) 문자열 메서드

Python에는 불리언(True/False) 값을 반환하는 문자열 메서드들이 여럿 있습니다. 이런 메서드들은 문자열의 특성을 파악하고 싶을 때 유용합니다. 예를 들어 문자열이 모두 대문자인지, 숫자만 포함하고 있는지 확인하고 싶다면, 조건을 충족할 때 True를 반환하는 불리언 문자열 메서드를 사용할 수 있습니다.

조건이 충족되면 True를 반환하는 Python 문자열 메서드 목록은 다음과 같습니다.

  • str.isupper(): 문자열의 알파벳 문자가 모두 대문자인 경우
  • str.islower(): 문자열의 알파벳 문자가 모두 소문자인 경우
  • str.istitle(): 문자열이 타이틀 케이스(각 단어 첫 글자가 대문자)인 경우
  • str.isspace(): 문자열이 공백 문자로만 구성된 경우
  • str.isnumeric(): 문자열이 숫자 문자만 포함하는 경우
  • str.isalnum(): 문자열이 알파벳과 숫자만 포함하는 경우 (기호 없음)
  • str.isalpha(): 문자열이 알파벳 문자만 포함하는 경우 (숫자나 기호 없음)

몇 가지 불리언 문자열 메서드를 직접 살펴보겠습니다. 다음은 isupper() 함수를 사용해 문자열이 대문자로만 이루어져 있는지 확인하는 예시입니다.

full_name = "JOHN APPLESEED"
print(full_name.isupper())

실행 결과: True. 변수 full_name에 저장된 텍스트가 모두 대문자이므로 isupper() 함수는 True를 반환합니다.

마찬가지로 istitle() 함수를 사용하면 문자열이 타이틀 케이스인지 확인할 수 있습니다.

sentence = "This is a sentence."
print(sentence.istitle())

실행 결과: False. 이 문자열은 각 단어가 대문자로 시작하지 않기 때문에, 즉 타이틀 케이스가 아니므로 istitle() 메서드는 False를 반환합니다.

불리언 문자열 메서드는 사용자 입력값을 검증하거나, 두 값을 정확히 비교해야 할 때 특히 유용하게 활용됩니다.

startswith()와 endswith(): 시작 및 끝 문자열 확인

특정 문자열이 지정한 값으로 시작하거나 끝나는지 확인해야 하는 경우가 있습니다. 예를 들어 사용자의 이름이 F로 시작하는지 확인하고 싶을 수 있습니다. 이럴 때 startswith()endswith() 함수를 사용하면 됩니다.

startswith() 메서드는 문자열이 특정 값으로 시작하면 True를, endswith() 메서드는 문자열이 특정 값으로 끝나면 True를 반환합니다. 조건에 맞지 않으면 False를 반환합니다.

두 메서드 모두 세 개의 매개변수를 받습니다. 첫 번째는 찾고자 하는 값이고, 두 번째 매개변수로 검색을 시작할 인덱스 위치를, 세 번째 매개변수로 검색을 종료할 인덱스 위치를 선택적으로 지정할 수 있습니다.

다음은 startswith() 함수의 사용 예시입니다.

full_name = "Bill Jefferson"
print(full_name.startswith("Bill"))

실행 결과: True.

만약 문자열의 네 번째 글자 이후, 즉 인덱스 값 3(인덱스는 0부터 시작)부터 Bill이 나타나는지 확인하고 싶다면 다음과 같이 코드를 작성할 수 있습니다.

full_name = "Bill Jefferson"
print(full_name.startswith("Bill", 3))

실행 결과: False. 인덱스 3 이후에는 Bill이 나타나지 않기 때문입니다.

split()과 join(): 문자열 분리와 결합

Python에서는 join()split() 메서드를 사용해서도 문자열을 조작할 수 있습니다.

join() 메서드는 반복 가능한(iterable) 객체의 모든 항목을 다른 문자열과 연결합니다. 다음은 join() 메서드의 동작 예시입니다.

string = "String"
"X".join(string)

실행 결과: SXtXrXiXnXg. join() 메서드가 string 변수의 각 글자를 순회하면서 글자마다 X를 삽입한 것입니다.

join() 메서드는 특정 값을 문자열과 결합할 때 유용하며, 문자열 리스트를 하나로 합치는 용도로도 자주 사용됩니다. 다음은 join()을 사용해 문자열 리스트를 하나의 문자열로 합치는 예시입니다.

print(",".join(["Lucy", "Emily", "David"]))

실행 결과: Lucy,Emily,David. 이제 이름 리스트가 배열이 아닌 하나의 문자열로 합쳐졌습니다.

반대로 split() 메서드를 사용하면 문자열을 분리하여 문자열 리스트를 얻을 수 있습니다. 다음은 split() 메서드로 문장을 문자열 리스트로 나누는 예시입니다.

example_sentence = "This is a sentence."
print(example_sentence.split())

실행 결과:

["This", "is", "a", "sentence."]

위와 같이 원본 문자열이 네 개의 항목으로 나뉘고, 해당 항목들로 새로운 리스트가 생성되었습니다.

split() 메서드는 별도의 매개변수를 지정하지 않으면 공백 문자를 기준으로 문자열을 분리하지만, 다른 문자를 기준으로 분리하는 것도 가능합니다. 다음은 문자열 내 쉼표를 기준으로 문자열을 나누는 프로그램 예시입니다.

names = "Lucy,Emily,David"
print(names.split(","))

실행 결과:

["Lucy", "Emily", "David"]

프로그램이 초기 문자열의 쉼표 값을 기준으로 문자열을 분리하고, 새로운 값들로 배열을 생성한 것을 확인할 수 있습니다.

마무리

문자열은 개발자가 프로그램에 텍스트 값을 저장할 수 있게 해주는 유용한 데이터 타입입니다. 이 튜토리얼에서는 문자열을 조작하는 데 사용할 수 있는 가장 일반적인 Python 내장 문자열 메서드들을 살펴보았습니다.

upper()lower() 메서드를 활용한 대소문자 처리 방법, len() 메서드로 문자열 길이를 구하는 방법, 그리고 Python에서 제공하는 다양한 불리언 문자열 메서드에 대해 학습했습니다.

또한 join()split()의 사용법, 그리고 문자열이 특정 부분 문자열로 시작하거나 끝나는지 확인하는 방법도 다루었습니다.

참고로 ljust(), rjust(), zfill() 같은 다른 문자열 메서드들도 존재하며, 이 글은 그 방대한 기능 중 극히 일부만 소개한 것입니다. 이제 여러분은 전문가처럼 Python에서 문자열을 자유롭게 다룰 준비가 되었습니다!