1) upper : 모든 문자를 대문자로
a = 'hello'
print(a.upper())
2) lower : 모든 문자를 소문자로
a = 'HELLO'
print(a.lower())
3) title : 각 '단어'의 첫번째를 대문자로, 나머지는 소문자로
4) capitalize : 첫 글자만 대문자로, 나머지는 소문자로
1) count : 특정 문자의 개수를 반환
a = 'hello'
print(a.count('h'))
print(a.count('l',1)) # 2번째 인덱스인 'e'에서 시작해서 'l'을 찾는다.
2) find : 해당 문자가 처음으로 등장하는 인덱스를 반환
a = 'you youth yours yolo'
print(a.find('o')) # 1
print(a.find('your')) # 10
print(a.find('o', 6)) # 11(6번 인덱스인 u부터 탐색)
print(a.find('i')) # -1
3) index : find 함수와 유사하나, 해당 문자를 찾지 못하면 error를 반환
a = 'you youth yours yolo'
print(a.index('o')) # 1
print(a.index('your')) # 10
print(a.index('o', 6)) # 11(6번 인덱스인 u부터 탐색)
print(a.index('i')) # ValueError: substring not found
1) isdigit : 모든 문자열이 숫자면 True
2) isalpha : 모든 문자열이 알파벳이나 한글이면 True
3) isupper : 모든 문자열이 대문자이면 True
4) islower : 모든 문자열이 소문자이면 True
👉 isupper와 islower은 각 각 소문자, 대문자만 안섞여있다면 공백, 한글, 숫자 등의 문자는 결과에 상관없다.
# isdigit
print('1350'.isdigit()) # True
print('1,350'.isdigit()) # False
print('13 50'.isdigit()) # False
print('123a'.isdigit()) # False
# isalpha
print('Hello'.isalpha()) # True
print('Hello!'.isalpha()) # False
print('Hi Hello'.isalpha()) # False
print('abc가'.isalpha()) # True
print('abc3'.isalpha()) # False
# isupper, islower
print('NEW YORK'.isupper()) # True
print('Next'.isupper()) # False
print('hi 33'.islower()) # True
print('abc가'.islower()) # True
1) strip : 양쪽 끝의 공백 제거
2) rstrip : 오른쪽 끝의 공백 제거
3) lstrip : 왼쪽 끝의 공백 제거
👉 줄바꿈 문자('\n')나 탭 문자('\t')등도 포함하여 제거가 가능
a = ' abc '
a.lstrip() # 'abc '
a.rstrip() # ' abc'
a.strip() # 'abc'
1) replace : string0.replace(string1, string2)
👉 string0 내의 string1 문자열을 모두 찾아서 string2 문자열로 바꿔준다.
a = 'abcde abcde abcde'
# 한글자 -> 한글자
print(a.replace('a','z)) #zbcde zbcde zbcde
# 한글자 -> 여러 글자
print(a.replace('a','zzz')) #zzzbcde zzzbcde zzzbcde
# 여러 글자 -> 한 글자
print(a.replace('ab','z')) #zcde zcde zcde
a = 'abcde abcde abcde'
# a를 지우는 효과
print(a.replace('a', ''))
# bcde bcde bcde
# 공백을 지우는 효과
print(a.replace(' ', ''))
# abcdeabcdeabcde
# 특수 케이스 : 모든 글자 사이에 z 추가
print(a.replace('', 'z'))
# zazbzczdzez zazbzczdzez zazbzczdzez
a = 'a,b,c,d,e!a,b,c,d,e!'
# replace 2번 적용 예시
a.replace(',', '').replace('!', '')
# abcdeabcde
# replace 3번 적용 예시
a.replace(',', '').replace('!', '').replace('c', ' ')
# ab deab de
a = 'abcde abcde abcde'
# 1번만 변경 가능
a.replace('a', 'z', 1)
# zbcde abcde abcde
a.replace('a', 'z', 2)
# zbcde zbcde abcde
a = 'abcde abcde abcde'
# 뒤쪽부터 1글자 변경 예시 ([::-1] 은 뒤집는 방법)
a[::-1].replace('a', 'z', 1)[::-1]
# abcde abcde zbcde
# 뒤쪽부터 글자 변경 ab -> yz 로 바꾸고 싶을 때 주의
a[::-1].replace('ba', 'zy', 1)[::-1]
# abcde abcde yzcde
1) split : 문자열을 공백 등으로 나눠서 단어 단위로 쪼개어 리스트에 반환
👉 어떤 문자열을 기준으로 나눌지를 결정하는 sep 인자가 첫번째로 오고, 최대 분할 횟수를 몇 번으로 제한할지를 결정하는 maxsplit 인자가 두번째로 온다.
(sep 인자는 기본으로 공백' '을 기준으로 분할하고, maxsplit은 지정하지 않으면 최대 가능 횟수 만큼 분할을 계속 한다.)
a = '가 나 다 a/b/c'
a.split() # ['가', '나', '다', 'a/b/c'] -> 공백을 기준으로 나눈 상황
a.split(' ', 2) # ['가', '나', '다 a/b/c'] -> 최대 분할 횟수 2회라서 마지막 원소가 분리 안됨
a.split('/') # ['가 나 다 a', 'b', 'c'] -> '/'를 기준으로 나눈 상황
# a.split().split('/') 불가능(리스트에는 split 함수 X)
b = a.split() # b[3] = 'a/b/c' 의 문자열
c = b[:3] + b[3].split('/') # ['가', '나', '다', 'a', 'b', 'c']
a = 'cabdabeabfabgabh' # c ~ h 사이에 ab가 들어있는 경우
# 길이가 2 이상인 문자열로 split 가능
a.split('ab') # ['c', 'd', 'e', 'f', 'g', 'h']
b = 'a#.b.#c.#.d#e' # .과 #으로 a ~ e가 나누어져 있는 상황
# replace 적용으로 같은 문자로 통일시킨 뒤, 나눌 수 있음
b = b.replace('.', '#') # a##b##c###d#e
c = b.split('#') # ['a', '', 'b', '', 'c', '', '', 'd', 'e']
d = [i for i in c if i != ''] # ['a', 'b', 'c', 'd', 'e']
1) join : 연결문자.join(리스트)
a = ['ab', 'cd', 'ef']
''.join(a) # 'abcdef'
' '.join(a) # 'ab cd ef'
'ggg'.join(a) # 'abgggcdgggef'