지난 글에 이어서 Python의 기본 문법 중 문자열에 대해 알아보겠습니다.
Python 문자열 설명
Python 문자열은 리스트와 비슷하다고 보시면 됩니다.
a = "엄마가 섬그늘에"
print(a[0])
print(a[1:5])
print(a[-2])
print(a[-6:-3])
>> 엄
>> 마가 섬
>> 늘
>> 가 섬리스트와 마찬가지로 ‘+'(더하기)나 ‘*'(곱하기)를 활용할 수 있습니다.
a = "엄마가 "
b = "섬그늘에"
print(a*3)
print(a+b)
>> 엄마가 엄마가 엄마가
>> 엄마가 섬그늘에또한 for 문을 활용하여 문자열을 더 쉽게 변환할 수 있습니다. 예를 들어 모든 문자 사이에 콤마(,)를 집어넣어 봅시다.
#len: 리스트나 문자열의 길이를 알게 해주는 함수
a = "엄마가 섬그늘"
length = len(a)
for i in range (0,length) :
print(a[i] + ',')
>> 엄,
>> 마,
>> 가,
>> ,
>> 섬,
>> 그,
>> 늘,뭔가 제가 원하는 결과가 나오지 않았네요. 이건 print에 옵션을 추가해서 줄 바꿈을 방지할 수 있습니다, 다음과 같이 코드를 수정해 봅시다.
a = "엄마가 섬그늘"
length = len(a)
for i in range (0,length) :
print(a[i] + ',', end = '')
>> 엄,마,가, ,섬,그,늘,Python 문자열 함수 활용 방법
문자 변환
- upper: 소문자를 대문자로
- lower: 대문자를 소문자로
- swapcase: 대/소문자 서로 변환
- title: 각 단어 제일 앞 글자만 대문자로
예시로 확인해 볼까요?
#upper 함수 사용법: 문자열.upper()
#lower 함수 사용법: 문자열.lower()
#swapcase 함수 사용법: 문자열.swapcase()
#title 함수 사용법: 문자열.title()
a = "I wanna go Home, PLZ let me gO."
print(a.upper())
print(a.lower())
print(a.swapcase())
print(a.title())
>> I WANNA GO HOME, PLZ LET ME GO.
>> i wanna go home, plz let me go.
>> i WANNA GO hOME, plz LET ME Go.
>> I Wanna Go Home, Plz Let Me Go.찾기
- count: 지정된 문자열의 개수 확인
- find: 지정된 문자열의 위치 확인
- index: find와 동일, 하지만 지정된 문자열이 존재하지 않을 경우 오류발생
- startswith: 지정된 문자열로 시작하면 True
- endswith: 지정된 문자열로 끝나면 True
예시로 확인해 봅시다.
#count 함수 사용법: 문자열.count()
#find 함수 사용법: 문자열.find()
#index 함수 사용법: 문자열.index()
#startswith 함수 사용법: 문자열.startswith()
#endswith 함수 사용법: 문자열.endswith()
a = "엄마가 섬그늘에 굴따러 가면 아기가 혼자 남아 집을 보다가"
#count 함수 활용
print(a.count("혼자"))
print(a.count("가"))
#find 함수 활용
print(a.find("굴"))
#index 함수 활용
print(a.index("굴"))
#startswith 함수 활용
print(a.startswith("굴"))
print(a.startswith("엄"))
#endswith 함수 활용
print(a.endswith("굴"))
print(a.endswith("가"))
>> 1
>> 4
>> 9
>> 9
>> False
>> True
>> False
>> True공백
- strip: 공백 제거(문자열 앞, 뒤에 있는 공백만 제거 가능, 중간에는 불가)
- rstrip: 문자열 뒤에 있는 공백 제거
- lstrip: 문자열 앞에 있는 공백 제거
예시를 통해 더 자세히 알아봅시다.
#strip 함수 사용법: 문자열.strip()
a = " P A S S "
print(a.strip())
print(a.rstrip())
print(a.lstrip())
>> P A S S
>> P A S S
>> P A S S또한 strip 함수의 괄호를 활용할 수 있습니다.
#strip 함수 사용법: 문자열.strip('제거할 문자열')
a = "####P # A # S # S####"
print(a.strip('#'))
print(a.rstrip('#'))
print(a.lstrip('#'))
>> P # A # S # S
>> ####P # A # S # S
>> P # A # S # S####그렇다면 문자열 사이에 있는 공백은 제거할 수 없을까요?? for 문과 if 문을 적절히 활용하면 문자열 내부에 있는 공백을 없앨 수 있습니다. 다음의 예시를 보시죠.
a = "####P A S S####"
result = ""
for i in range(0, len(a)):
if a[i] != ' ':
result = result + a[i]
print(result)
>> ####PASS####a의 값 중 공백이 아닐 때 result에 a의 값을 추가한다는 코드입니다. 결과를 보면 문자열 내부의 공백이 없어진 걸 확인할 수 있습니다. 물론 6번째 줄에 result = result + a[i] 대신 result += a[i]를 사용해도 됩니다.
a = "####P A S S####"
result = ""
for i in range(0, len(a)):
if a[i] != ' ':
result += a[i]
print(result)변경
replace 함수를 활용하여 문자열을 변경할 수 있습니다.
#replace 함수 활용 방법: 문자열.replace('기존','변경')
a = "엄마가 섬그늘에"
a = a.replace('엄마가','아빠가')
print(a)
>> 아빠가 섬그늘에분할, 결합
- split: 공백이나 지정된 문자가 사이에 있는 경우 리스트로 바꿔줌
- splitlines: 줄 단위로 분리
- join: 문자열을 하나로 합해줌
먼저 split 활용 방법을 볼까요?
#split 함수 활용 방법: 문자열.split('문자열')
a = "P A S S"
print(a.split())
>> ['P', 'A', 'S', 'S']문자열 a에서 띄어쓰기를 기준으로 분리해서 리스트가 만들어진 것을 확인할 수 있습니다. 괄호 안에 문자를 넣어 분리 기준을 바꿀 수도 있습니다.
#split 함수 활용 방법: 문자열.split('문자열')
a = "P#A#S#S"
print(a.split('#'))
>> ['P', 'A', 'S', 'S']다음은 splitlines에 대해 알아볼 건데 다음 코드를 볼까요?
a = "Test\nPASS"
print(a)
>> Test
>> PASS문자열 내부에 \n을 넣어 줄 바꿈을 할 수 있습니다. splitlines는 줄이 바뀔 때마다 분리해서 리스트로 만들어 줍니다.
#splitlines 함수 활용 방법: 문자열.splitlines()
a = "Test\nPASS"
print(a.splitlines())
>> ['Test', 'PASS']마지막으로 join 함수에 대해 알아보겠습니다. join은 괄호 안에 있는 문자열 사이에 원래 문자열을 넣어주는 함수입니다.
#join 함수 활용 방법: 문자열.join('문자열')
a = "%&"
print(a.join('PASS'))
>> P%&A%&S%&Smap 함수
map 함수는 리스트의 값을 함수명에 대입하는 함수입니다. 무슨 말인지 잘 모르겠는데 예시를 통해 확인해 볼까요?
#map 함수 활용 방법: map(함수명, 리스트)
Today = ['2023', '12', '04']
Today = list(map(int,Today))
print(Today)
>> [2023, 12, 4]위 예시를 보면 처음에 Today는 문자열로 이루어진 리스트였습니다. 그런데 map 함수가 int 즉, 정수로 변환하라는 명령을 해서 Today의 값이 정수로 변한 것을 확인할 수 있습니다.
정렬, 문자열 채우기
- center: 가운데 정렬
- ljust: 왼쪽 정렬
- rjust: 오른쪽 정렬
- zfill: 오른쪽 정렬 후 왼쪽을 0으로 채움
#center 함수 활용 방법: 문자열.center('숫자')
#ljust 함수 활용 방법: 문자열.ljust('숫자')
#rjust 함수 활용 방법: 문자열.rjust('숫자')
#zfill 함수 활용 방법: 문자열.zfill('숫자')
a = 'PASS'
print('%',a.center(6),'%')
print('%',a.ljust(6),'%')
print('%',a.rjust(6),'%')
print('%',a.zfill(6),'%')
>> % PASS %
>> % PASS %
>> % PASS %
>> % 00PASS %center의 경우 빈 곳에 문자를 집어넣을 수 있습니다.
a = 'PASS'
print(a.center(10,'-'))
>> ---PASS---구성 파악
- isdigit: 숫자로만 이루어져 있으면 True
- isalpha: 문자로만 이루어져 있으면 True
- isalnum: 숫자와 문자가 섞여 있으면 True
- islower: 소문자로만 이루어져 있으면 True
- isupper: 대문자로만 이루어져 있으면 True
- isspace: 공백으로만 이루어져 있으면 True
References: 위키독스