파이썬 라이브러리 기본 - 문자열 관련 함수 알아보기

3. 문자열 관련 함수 알아보기

  • 위 코드에서 단어에 괄호가 들어 있는 경우가 꽤 있음
  • 단어만으로 체크를 하려 했으므로, 의도와 다르기 때문에 없애주자

우선 주요 문자열 관련 함수 정리해보기

3.1. 문자열에 있는 특정 문자 갯수 세기 (count 함수)

In [130]:
string = 'Dave David'
string.count('D')    # 문자열에 D 가 몇 번 나올까요? 대소문자도 구별함
Out[130]:
2
  • 간단 연습: string에 v 는 몇 번 나올까?
  • 간단 연습: string에 vid 는 몇 번 나올까? (꼭 문자 하나만 되는 것이 아니라, 연결된 문자열도 가능)


3.2. 문자열에 있는 특정 문자의 위치 알려주기

index 함수

In [137]:
string = 'Dave ID is dave'
string.index('I')   # 맨 앞 자리부터 0, 1, ... 순으로 위치를 표시
Out[137]:
5
  • 간단 연습: string에 있는 D의 위치 확인하기 (가장 먼저 나오는 위치를 알려줌)
  • 간단 연습: string에 x의 위치 확인하기 (해당 문자가 없으면 에러가 남)
In [138]:
string.index('x')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-138-46be2788fb21> in <module>()
----> 1 string.index('x')

ValueError: substring not found

해당 문자가 문자열에 없을 때, 에러를 안낼 수는 없을까? --> find 함수를 사용하면 됨

  • find 함수는 해당 문자가 문자열에 없으면 -1 을 리턴함 (에러는 내지 않음)
  • 이외에는 index 함수와 동일
In [139]:
string = 'Dave ID is dave'
string.find('x')    # 맨 앞 자리부터 0, 1, ... 순으로 위치를 표시
Out[139]:
5
  • 간단 연습: string에 d의 위치 확인하기


3.3. 문자열 사이에 다른 문자 넣기

In [141]:
string = "12345"
comma = ','
comma.join(string)     # 껴넣을 문자.join(문자열)
Out[141]:
'1,2,3,4,5'
  • 간단 연습: 문자열 사이에 ... 넣기

3.4. 문자열 앞뒤에 공백 지우기

  • 실제 현실 세계에 있는 문자열 데이터를 정리하다보면, 문자열 앞뒤에 공백 또는 기호가 있는 경우가 많음
In [146]:
string = " Dave "
string.strip()        # 앞 뒤 공백을 다 지움
Out[146]:
'Dave'
In [151]:
string2 = "     David  "
string2.strip()      # 앞 뒤 공백이 여러개 있어도 한번에 다 지움
Out[151]:
'David'
In [152]:
string2.lstrip()      # 앞쪽(문자열 왼쪽)만 지우기 left strip 의 약자
Out[152]:
'David  '


In [153]:
string2.rstrip()      # 앞쪽(문자열 오른쪽)만 지우기 right strip 의 약자
Out[153]:
'     David'

3.5. 영문자 대소문자로 변환하기

  • 대소문자를 구별하기 때문에, 대소문자 구별하지 않고 처리를 하기 위해 임의로 대문자 또는 소문자로 다 바꿀 때가 있음

소문자를 대문자로 바꾸기

In [155]:
string = 'Dave'
string.upper()        # 본래 대문자는 놔두고, 소문자인 문자만 대문자로 변경
Out[155]:
'DAVE'

대문자를 소문자로 바꾸기

In [156]:
string = 'Dave'
string.lower()        # 본래 소문자는 놔두고, 대문자인 문자만 대문자로 변경
Out[156]:
'dave'

3.6. 문자열을 나누기



In [167]:
string = "Dave goes to Korea"
string.split()       # split() 인자를 넣지 않으면 디폴트로 스페이스를 기준으로 분리
Out[167]:
['Dave', 'goes', 'to', 'Korea']
In [168]:
string.split(' ')    # 명시적으로 스페이스를 기준으로 분리하겠다고 넣어줘도 됨
Out[168]:
['Dave', 'goes', 'to', 'Korea']
In [165]:
string = "Dave/goes/to/Korea"
string.split('/')   # split() 인자를 넣으면 해당 인자를 기준으로 분리
Out[165]:
['Dave', 'goes', 'to', 'Korea']

프로그래밍 연습
string = "10,11,22,33,44" 를 컴마(,) 로 분리해서 리스트 변수를 만들어 각 값을 정수형 리스트 데이터로 넣기

int('11') 을 실행하면 숫자 11로 변환

3.7. 문자열 중 일부를 다른 문자로 바꾸거나, 삭제하기

In [157]:
string = "David goes to Korea"
string.replace("David", "Dave")     # David 를 Dave 로 바꾸기
Out[157]:
'Dave goes to Korea'
In [159]:
string2 = "(Dave)"
string2.replace("()", "")           # 연결된 문자열은 해당 문자열이 동일하게 매칭이 되어야 함
Out[159]:
'(Dave)'


In [160]:
string2.replace("(", "")
Out[160]:
'Dave)'
In [161]:
string2.replace(")", "")
Out[161]:
'(Dave'
In [163]:
string2 = string2.replace("(", "")   # ( 가 삭제된 문자열로 변수 값을 덮어 씌운 후에 다시 ) 를 삭제하면 됨
string2.replace(")", "")
Out[163]:
'Dave'
프로그래밍 연습
string = "10,11,22,33,44" 에서 컴마(,) 를 / 으로 대체하기