Python

[Python] 문자열 함수

주댕이 2024. 1. 10. 14:57

# 문자열 분리하기

  • split()
    • 문자열(str)에서 구분자(separator)인 sep을 기준으로 문자열을 분리해 리스트로 반환한다.
    • 구분자(sep)를 입력하지 않고 str.split()을 수행하면 문자열 사이의 모든 공백과 개행문자(\n)를 없애고 분리된 문자열을 항목으로 담은 리스트를 반환한다.
str.split([sep])  # 대괄호([]) 부분은 생략할 수 있다

coffee_menu_str = "에스프레소,아메리카노,카페라테,카푸치노"
coffee_menu_str.split(',')  # ['에스프레소', '아메리카노', '카페라테', '카푸치노'] # 리스트로 반환
                            
# 문자열에 직접 split() 메서드 사용하기
"에스프레소,아메리카노,카페라테,카푸치노".split(',')
# ['에스프레소', '아메리카노', '카페라테', '카푸치노']

"에스프레소 아메리카노 카페라테 카푸치노".split(' ')
# ['에스프레소', '아메리카노', '카페라테', '카푸치노']

"에스프레소.아메리카노.카페라테.카푸치노".split('.')
# ['에스프레소', '아메리카노', '카페라테', '카푸치노']

# 문자열에 인자 없이 split()를 사용하면 문자열 사이의 모든 공백과 개행문자를 없애고 분리된 문자열을 반환한다.
"	에스프레소 \n\n 아메리카노 \n 카페라테  카푸치노  \n\n".split()
# ['에스프레소', '아메리카노', '카페라테', '카푸치노']

 

  • maxsplit
    • 문자열을 분리할 때 인자 maxsplit을 추가하면 앞에서부터 원하는 횟수만큼만 문자열을 분리한다.
str.split([sep, ]maxsplit=숫자)

"에스프레소 아메리카노 카페라테 카푸치노".split(maxsplit=2)
# ['에스프레소', '아메리카노', '카페라테 카푸치노']

 

  • 예: 국가 번호까지 있는 전화번호에서 국가 번호를 뺀 나머지 번호 구하기
phone_number = "+82-01-2345-6789"  # 국가 번호가 포함된 전화번호
split_num = phone_number.split("-", 1)  # 국가 번호와 나머지 번호 분리

print(split_num)  # ['+82', '01-2345-6789']
print(f"국내전화번호: {split_num[1]}")  # 국내전화번호: 01-2345-6789

 

# 필요없는 문자열 삭제하기

  • strip()
    • 문자열(str)의 앞과 뒤에서 시작해서 지정한 문자(chars) 외의 다른 문자를 만날 때까지 지정한 문자(chars)를 모두 삭제한 문자열을 반환한다.
    • 만약 지정한 문자(chars)와 일치하는 것이 없으면 문자열(str)을 그대로 반환한다.
    • 지정한 문자(chars)가 여러 개일 경우 순서는 상관 없다.
    • 지정한 문자(chars) 없이 str.strip()를 수행하면 문자열 앞과 뒤의 모든 공백과 개행문자(\n)를 삭제한 후에 문자열을 반환한다.
text = " Python "
text.strip()  # 'Python'

"aaaPythonaaa".strip('a')  # 'Python'

test_str = "aaaaabbPythonbbaaaaaa"
temp1 = test_str.strip('a')  
temp1  # 'bbPythonbb'  # 문자열 앞뒤의 'a' 제거
temp1.strip('b')  # 'Python'  # 문자열 앞뒤의 'b' 제거
test_str.strip('ab')  # 'Python'  # 문자열 앞뒤의 'a'와 'b' 제거
test_str.strip('ba')  # 'Python'  # 지우고자 하는 문자의 순서는 상관 없다

# 문자열의 앞뒤에서 지정한 문자 외 다른 문자를 만날 때까지만 지정한 문자를 모두 삭제한다
"aaaBallaaa".strip('a')  # 'Ball'

# 문자열의 왼쪽 부분만 삭제하기
str_lr = "000Python is easy to learn.000"
str_lr.lstrip('0')  # 'Python is easy to learn.000'

# 문자열의 오른쪽 부분만 삭제하기
str_lr.rstrip('0')  # '000Python is easy to learn.'

 

 

# 문자열 연결하기

  • 더하기 연산자(+)
name1 = '철수'
name2 = '영미'

hello = '님, 주소와 전화 번호를 입력해 주세요'

print(name1 + hello)  # 철수님, 주소와 전화 번호를 입력해 주세요
print(name2 + hello)  # 영미님, 주소와 전화 번호를 입력해 주세요
  • join()
    • 문자열을 항목으로 갖는 시퀀스(seq)의 항목 사이에 구분자 문자열(str)을 모두 넣은 후에 문자열로 반환한다.
      • 시퀀스: 리스트나 튜플과 같이 여러 데이터를 순서대로 담고 있는 나열형 데이터
str.join(seq)

address_list = ['서울시', '서초구', '반포대로', '201(반포동)']

# 문자열 리스트를 공백으로 연결해서 문자열 생성하기
a = " "  # 리스트의 각 값 사이에 공백을 넣음
a.join(address_list)  # '서울시 서초구 반포대로 201(반포동)'

# 구분자 문자열을 변수에 할당하지 않고 직접 지정하기
" ".join(address_list  # '서울시 서초구 반포대로 201(반포동)'

 

 

# 문자열 찾기

  • find()
    • 문자열(str)에서 찾으려는 검색 문자열(search_str)과 첫 번째로 일치하는 문자열(str)의 위치를 반환한다.
    • 문자열의 위치는 0부터 시작한다.
    • 만약 문자열에서 검색 문자열을 찾을 수 없으면 -1을 반환한다.
str.find(search_str)

str_f = 'Python code.'
print("찾는 문자열의 위치:", str_f.find('Python'))  # 찾는 문자열의 위치: 0
print("찾는 문자열의 위치:", str_f.find('code'))  # 찾는 문자열의 위치: 7
print("찾는 문자열의 위치:", str_f.find('n'))  # 찾는 문자열의 위치: 5
print("찾는 문자열의 위치:", str_f.find('easy'))  # 찾는 문자열의 위치: -1

 

  • count()
    • 문자열(str)에서 찾고자 하는 문자열(search_str)과 일치하는 횟수를 반환하고, 없으면 0을 반환한다.
str_c = "Python is powerful. Python is easy to learn. Python is open"

print("Python의 개수는?", str_c.count("Python"))  # Python의 개수는? 3
print("powerful의 개수는?", str_c.count("powerful"))  # powerful의 개수는? 1
print("Java의 개수는?", str_c.count("Java"))  # Java의 개수는? 0

 

  • startswith()
    • 문자열(str)이 지정된 문자열(prefix)로 시작되면 True를, 그렇지 않으면 False를 반환한다.
  • endswith()
    • 문자열(str)이 지정된 문자열(suffix)로 끝면 True를, 그렇지 않으면 False를 반환한다.
str.startswith(prefix)
str.endswith(suffix)

str_c = "Python is powerful. Python is easy to learn. Python is open."

print("Python으로 시작?", str_c.startswith('Python'))  # Python으로 시작? True
print("easy로 시작?", str_c.startswith('easy'))  # easy로 시작? False
print(".로 끝?", str_c.endswith('.'))  # .로 끝? True
print("!로 끝?", str_c.endswith('!'))  # !로 끝? False

 

 

# 문자열 바꾸기

  • replace()
    • 문자열(str)에서 지정한 문자열(old)을 찾아서 새로운 문자열(new)로 바꾼다.
    • count: 문자열(str)에서 지정된 문자열을 찾아서 바꾸는 횟수
    • 만약 횟수를 지정하지 않으면 문자열 전체에서 찾아 바꾼다.
str.replace(old, new[, count])

str_a = 'Python is fast. Python is friendly. Python is open.'

# Python을 IPython으로 변경
print(str_a.replace('Python', 'IPython'))
# IPython is fast. IPython is friendly. IPython is open.

# 특정 문자 삭제햐기
str_b = '[Python][is][fast]'
str_b1 = str_b.replace('[', '')  # 문자열에서 '['를 제거
str_b2 = str_b1.replace(']', ' ')  # 결과 문자열에서 다시 ']'를 제거
print(str_b)  # [Python][is][fast]
print(str_b1)  # Python]is]fast]
python(str_b2)  # Python is fast
728x90

'Python' 카테고리의 다른 글

[Python] 함수  (0) 2024.01.10
[Python] 리스트 함수  (0) 2024.01.10
[Python] 튜플(vs 리스트)  (4) 2024.01.09
[Python] 리스트  (0) 2024.01.09
[Pandas] 데이터 통합하기  (2) 2024.01.08