개요
파이썬은 문자열 데이터 유형과 관련된 여러 내장 함수(built-in function)를 제공합니다. 이들 내장 함수를 사용하면 문자열을 쉽게 수정하고 조작할 수 있습니다.
이번 포스트에서는 파이썬에서 문자열로 작업하는 데 사용할 수 있는 여러 함수를 살펴보겠습니다.
※ 파이썬에서 제공하는 문자열의 내장 함수는 종류가 많기 때문에 지속적으로 추가하도록 하겠습니다.
문자열을 대문자 또는 소문자로 변환
str.upper()
과 str.lower()
함수는 원본 문자열의 모든 문자를 대문자 또는 소문자로 변환하여 반환합니다. 문자열은 변경할 수 없는 데이터형(immutable data type)이므로 반환된 문자열은 새로운 문자열입니다. 변환 시 문자(알파벳)가 아닌 경우는 변경 없이 반환됩니다.
문자열 Sammy Shark
를 모두 대문자로 바꾸겠습니다.
ss = "Sammy Shark!"
print(ss.upper())
SAMMY SHARK!
문자열 Sammy Shark!
를 모두 소문자로 바꾸겠습니다.
print(ss.lower())
sammy shark!
str.upper()
과 str.lower()
를 사용하는 전형적인 예는 사용자에게 문자열을 입력받아 이 값을 평가 비교하는 것입니다. 예를 들어 사용자가 자신의 이름을 소문자로 입력을 하던지 대문자로 입력을 하던지 혹은 조합하여 입력을 하던지 모두 동일한 값으로 간주하여 비교하고 싶다면 사용자가 입력한 문자열을 대문자로 변환 후 비교하여, 데이터 베이스에 해당 이름이 있는지 확인할 수 있습니다.
불린(Boolean) 메서드
파이썬에는 불린(Boolean) 값으로 평가되는 문자열 메서드가 있습니다. 이런 메서드는 사용자가 입력할 양식을 만들 때 유용하게 사용할 수 있습니다. 만약 우리가 우편번호를 입력받아야 한다면 숫자로 구성된 문자열을, 이름을 입력받아야 한다면 영문자로만 구성된 문자열을 입력받았는지 확인할 수 있습니다.
다음은 불린 값을 반환하는 문자열 메서드입니다.
Method | True if |
---|---|
str.isalnum() |
문자열은 영문자와 숫자로만 구성되어 있는가? (no symbols) |
str.isalpha() |
문자열이 영문자로만 이루어져 있는가? (no symbols) |
str.islower() |
문자열에 포함된 영문자가 모두 소문자인가? |
str.isnumeric() |
문자열이 숫자로만 구성되어 있는가? |
str.isspace() |
문자열이 공백문자(white space)로만 구성되어 있는가? |
str.istitle() |
문자열이 제목 형식(단어의 첫문자가 대문자)에 있는가? |
str.isupper() |
문자열에 포함된 영문자가 모두 대문자인가? |
예시로 몇 가지 메서드를 살펴보겠습니다.
number = "5"
letters = "abcdef"
print(number.isnumeric())
print(letters.isnumeric())
True
False
문자열 5
에서 str.isnumeric()
메서드를 사용하면 True
값을 반환합니다. 반면 동일한 메서드를 abcdef
에서 사용하면 False
를 반환합니다.
마찬가지로 문자열에 포함된 영문자가 제목인지, 대문자인지 또는 소문자인지 확인할 수 있습니다.
movie = "2001: A SAMMY ODYSSEY"
book = "A Thousand Splendid Sharks"
poem = "sammy lived in a pretty how town"
이제 대소문자를 확인하는 불린 메서드를 사용해 보겠습니다.
print(movie.islower())
print(movie.isupper())
print(book.istitle())
print(book.isupper())
print(poem.istitle())
print(poem.islower())
이들 각각의 실행결과는 다음과 같습니다.
False
True
True
False
False
True
문자가 소문자인지 대문자인지 또는 제목 형식인지 여부를 확인하면 데이터를 적절하게 정렬할 수 있을 뿐 아니라 문자열을 확인한 다음 필요에 따라 수정하여 수집한 데이터를 표준화할 수 있습니다.
불린 문자열 메서드는 사용자가 입력한 것이 원하는 서식에 맞는지를 확인하는 경우에 유용합니다.
문자열 길이
문자열을 다루는 len()
함수는 문자열에 포함된 문자의 수를 반환합니다. 이 메서드를 사용하는 예로는 최소 또는 최대 암호 길이를 제한하거나 더 큰 문자열을 특정 길이로 잘라야 하는 경우를 들 수 있습니다.
이 메서드의 예제로 길이가 긴 문자열에의 길이 출력해보겠습니다.
open_source = "Sammy contributes to open source."
print(len(open_source))
33
변수 open_source
에 문자열 "Sammy contributes to open source."
를 할당한 후, 이것을 len(open_source)
처럼 len()
함수에 넘깁니다. 그리고 이것을 다시 print()
메서드를 이용해 화면에 출력하였습니다.
len()
는 큰 따옴표 또는 작은따옴표 사이의 포함된 모든 글자(문자, 숫자, 공백 및 기호)의 개수를 반환합니다.
join(), split(), replace() 메서드
이 외에도 파이썬에서 문자열 조작을 위한 메서드로 str.join()
, str.split()
, str.replace()
메서드가 있습니다.
join()
str.join()
메서드는 +
연산자와 마찬가지로 두 문자열을 결합합니다. 하지만 한 문자열을 다른 문자열에 전달하는 방식으로 연결됩니다.
문자열을 만들어 보겠습니다.
balloon = "Sammy has a balloon."
이제 str.join()
메서드를 사용하여 문자열에 공백을 추가하겠습니다. 메서드는 다음과 같이 사용합니다.
" ".join(balloon)
메서드의 수행 결과를 확인하기 위해 화면에 출력해보겠습니다.
print(" ".join(balloon))
반환된 새 문자열에는 첫 번째 문자열 전체에 공백 이 추가되었습니다.
S a m m y h a s a b a l l o o n .
str.join()
메서드를 사용하여 원래 문자열을 뒤집어 반환할 수도 있습니다.
print("".join(reversed(balloon)))
.noollab a sah ymmaS
이 코드에서 문자열을 뒤집는 과정에서 다른 문자열이 추가되지 않도록 따옴표 사이에는 공백이 없는 상태(""
)로 적용하였습니다.
이 str.join()
메서드를 사용하여 문자열로 구성된 리스트를 새로운 문자열로 결합할 수도 있습니다.
문자열 리스트의 요소를 쉼표로 구분된 문자열로 만들겠습니다.
print(",".join(["sharks", "crustaceans", "plankton"]))
sharks,crustaceans,plankton
위 코드를 ", ".join(["sharks", "crustaceans", "plankton"])
로 수정한다면 쉼표와 공백을 함께 추가할 수 있습니다.
split()
방금 문자열을 합친 것처럼 문자열을 쪼갤 수도 있습니다. 이를 위해서 str.split()
메서드를 사용합니다.
print(balloon.split())
['Sammy', 'has', 'a', 'balloon.']
str.split()
메서드는 공백을 기준으로 쪼개진 문자열들로 구성된 리스트를 반환합니다. 별도의 파라미터를 사용하지 않는다면 쪼개는 기준은 공백이 됩니다.
str.split()
을 원본에서 특정 부분을 제거하는데도 사용할 수 있습니다. 예를 들어 앞선 문자열에서 a
를 제거하고 싶다면 다음과 같이 작성할 수 있습니다.
print(balloon.split("a"))
['S', 'mmy h', 's ', ' b', 'lloon.']
문자 a
가 제거되며 문자 a
가 있었던 위치를 기준으로 문자열이 분리되었습니다. (공백은 그대로 유지되어 있습니다.)
replace()
str.replace()
메서드는 원래 문자열에서 어떤 부분을 대체한 문자열을 반환할 수 있습니다.
앞선 문장에서 "has"를 "had"로 변경하고 싶다면 다음과 같이 코드를 작성할 수 있습니다.
print(balloon.replace("has","had"))
괄호에서 첫 번째 문자열은 바꾸려는 것이고 두 번째 문자열은 바꿀 결과입니다. 따라서 위 코드의 결과는 다음과 같습니다.
Sammy had a balloon.
파이썬에서는 문자열 메서드 str.join()
, str.split()
, str.replace()
을 사용해 문자열을 좀 더 편리하게 조작할 수 있습니다.
결론
이번 포스트에서는 파이썬 프로그램에서 문자열을 다루고 조작하는 데 사용할 수 있는 문자열 자료형에 포함된 몇 가지 내장 메서드를 살펴보았습니다.
출처
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] 초보자를 위한 프로젝트 (나만의 비트코인 가격 알리미) (0) | 2021.01.18 |
---|---|
[Python] PIP 사용법 (0) | 2020.11.22 |
문자열 서식 다루기 (0) | 2020.05.11 |
문자열 다루기의 기초 (0) | 2020.05.09 |