파이썬 문자열 함수

JoyJuhee·2022년 10월 6일
0

Python

목록 보기
4/22
post-thumbnail

1. 문자열 대/소문자 변환 (upper / lowe / title / capitalize)

1) upper : 모든 문자를 대문자로

a = 'hello'
print(a.upper())

2) lower : 모든 문자를 소문자로

a = 'HELLO'
print(a.lower())

3) title : 각 '단어'의 첫번째를 대문자로, 나머지는 소문자로

4) capitalize : 첫 글자만 대문자로, 나머지는 소문자로

2. 문자열 탐색 (count / find / index)

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

3. 문자열 구성 파악 (isdigit / isalpha / isupper / islower)

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

4. 문자열 공백 제거 (strip / rstrip / lstrip)

1) strip : 양쪽 끝의 공백 제거
2) rstrip : 오른쪽 끝의 공백 제거
3) lstrip : 왼쪽 끝의 공백 제거
👉 줄바꿈 문자('\n')나 탭 문자('\t')등도 포함하여 제거가 가능

a = '  abc  '
a.lstrip() # 'abc  '
a.rstrip() # '  abc'
a.strip() # 'abc'

5. 특정 문자 대체 (replace)

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
  • 함수를 여러번 적용할 수 있다. replace 함수의 결과값도 문자열이기 때문에 가능하다.
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

6. 문자열 쪼개기 (split)

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']
  • 길이 2 이상의 문자열로 나누는 경우와 다른 문자열로 두 번 나누는 경우
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']

7. 문자열 합치기 (join)

1) join : 연결문자.join(리스트)

a = ['ab', 'cd', 'ef']

''.join(a) # 'abcdef'
' '.join(a) # 'ab cd ef'
'ggg'.join(a) # 'abgggcdgggef'

출처 : https://jimmy-ai.tistory.com/62

0개의 댓글