파이썬은 문자열을 다룰때 다양한 형태로 문자열을 다룰 수 있습니다. C나 Java같은 언어에서는 문자열을 쌍따옴표로 둘러싸서 문자열을 표현하지만 파이썬은 ', ", ''' 로 둘러싸서 문자열을 표현할 수 있죠. 이렇게하는 이유는 ', " 가 문자열에 글자로 표현될 때 문자열의 종료나 시작으로 인식하지 않게 하기 위함입니다.
이와 같은 방식은 우선 자료형에 따른 포맷 문자를 알고있어야하는 단점이 있습니다. 파이썬 3부터는 포맷을 알고 있지 않아도 사용할 수 있는 방법은 format함수를 사용할 수 있습니다. 여기서 중괄호를 이용합니다. 숫자를 입력하여 차례대로 입력받을 수도 있고, 명시적으로 이름을 지정해서 사용할 수도 있습니다.
문자열 메소드는 엄청 많은데, 그 중에서 몇가지 문자열 메소드를 알아보도록 하겠습니다. 문자열은 아래의 문자열을 사용해보지요.
paul_rand = 'Do not to be original, just-try-to-be-good.'
- 문자열 길이 : len
문자열 내장 메소드는 아니지만 길이를 알고자 하는 경우 len 내장 함수를 쓰면 됩니다.
print(len(paul_rand))
43
- 문자수 세기 : count
문자나 문자열의 수를 새려면 count 메소드를 사용하여 확인할 수 있습니다.
print (paul_rand.count('t')) #t문자 세기
print (paul_rand.count('to')) #to 문자열 세기
5
2
- 대소문자로 변경 : upper, lower, casefold
알파벳을 모두 소문자로 변경하려면 lower 메소드 사용하면 되는데 소문자로 변경하는 메소드는 casefold라는 메소드도 있습니다. 반대로 모두 대문자로 변경하려면 upper를 사용하면 됩니다.
print (paul_rand.upper()) #모두 대문자로 변경
print (paul_rand.lower()) #모두 소문자로 변경
print (paul_rand.casefold())
DO NOT TO BE ORIGINAL, JUST-TRY-TO-BE-GOOD.
do not to be original, just-try-to-be-good.
do not to be original, just-try-to-be-good.
- 문자열 분리 : split
문자열을 공백, 또는 지정된 나누려고 구분된 구분자에 따라서 문자열을 쪼개고 싶다면 split 메소드를 사용할 수 있습니다. 인자를 넣어주지 않는다면 공백을 기준으로 나누고, 지정한 문자열을 넘겨주면 그 문자열을 기준으로 문자열을 나눕니다. 쪼개어진 문자열들은 리스트 형태로 넘겨줍니다.
문자열에서 특정 문자열이 어느 위치에 있는지 확인하려면 find와 index를 사용하면 됩니다. 이때 가장 첫번째로 등장한 위치를 반환합니다. find와 index의 차이점은 문자를 찾지 못할때는 에러를 발생시키느냐 마냐입니다. find는 못찾으면 -1을 반환하고 index는 에러를 발생시킵니다.
o : 1
. : 42
original : 13
just : 23
6 : -1
Traceback (most recent call last):
File "C:\Users\grjwu\PycharmProjects\pythonProject1\main.py", line 9, in <module>
print ('6 :', paul_rand.index('6'))
ValueError: substring not found
또는 start와 end 인덱스를 지정하게 되면 그 부분에 대해서만 찾아오게 됩니다.
print (paul_rand.find('to',4,9)) # 글자위치 4부터 9 전까지 탐색
print (paul_rand.index('or',10,19)) # 글자위치 10부터 19 전까지 탐색
7
13
왼쪽이 아니라 오른쪽에서 찾아보고 싶다면 rfind와 rindex를 사용하면 됩니다. 이때 결과는 위의 index와 find와 동일하며 오류내는 것도 동일합니다.
good = 'good, good, good~'
print ('o : ', good.rfind('o'))
print ('g : ', good.rindex(','))
o : 14
g : 10
- 문자열 변경 : replace
특정 문자열을 변경하고 싶다면 replace메소드를 사용하여 바꿀 수 있습니다.
print (paul_rand.replace('to','TO'))
Do not TO be original, just-try-TO-be-good.
- 특정 문자열로 시작하느냐 끝나느냐 - startswith, endswith
우리가 지정한 문자열로 시작하느냐를 알아보고 싶다면 startswith, 끝이 나는가를 알아보려면 endswith 메소드를 사용하면 됩니다. 지정된 문자열로 시작, 끝이 나면 True를, 아니면 False를 반환합니다.