-
반응형
문자열 다루기 2탄 입니다. 지난번 문자열 1탄으로 문자열 나누기, 대소문자 변환, 정렬하기 등에 대해 다루었습니다.
이번 포스팅은 문자열 세기, 찾기, 포맷팅에 대해 다룹니다.
● 문자열 문자 개수
문자열 중에 특정 문자를 포함하는 개수를 구합니다.
문자는 대소문자를 구분하여 정확한 개수를 반환합니다.
참고로 전체 문자열 길이를 알고 싶으면 len() 이란 함수를 사용하면 됩니다.
>>> x = "Hello World“
### ‘ㅣ’ 이 3개 있으므로 3을 돌려줍니다.
>>> x.count('l')
3
>>> x.count('o’)
2
#### 대소문자를 구분합니다.
>>> x.count('h')
0
>>> x.count('H’)
1
### 문자열도 가능합니다.
>>> x.count('He’)
1
### 문자열 길이를 구합니다.
>>> len(x)
11
>>>● 문자열 찾기
특정 문자열을 찾는 메소드들을 소개합니다.
startswith() : 특정 문자로 시작하는지를 True, False 로 반환해 줍니다.
endswith() : 특정 문자로 시작하는지를 True, False 로 반환해 줍니다.
find() : 특정 문자의 시작 위치를 인덱스 숫자로 반환해 줍니다.
rfind() : find() 는 왼쪽 부터 , rfind() 는 오른쪽 부터 찾아 위치를 반환해 줍니다.
Index() : 특정 문자의 시작 위치를 인덱스 숫자로 반환해 줍니다.
rindex() : rindex() 는 왼쪽 부터 , rfind() 는 오른쪽 부터 찾아 위치를 반환해 줍니다
>>> x = "0123456789"
>>> y = "가나다라마바사“
### X 변수가 ‘012’로 시작을 하므로 True 를 반환합니다.
>>> x.startswith('012')
True
### X 변수가 ‘012’로 시작을 하지 않으므로 False 를 반환합니다.
>>> x.startswith('123')
False
### y 변수가 ‘가’로 시작을 하므로 True 를 반환합니다.
>>> y.startswith('가')
True
### startswith( ‘문자‘, 시작 인덱스 ) 형식으로 3부터 시작이므로 True를 반환합니다.
>>> y.startswith('라', 3)
True
### startswith( ‘문자‘, 시작 인덱스 ) 형식으로 0부터 시작이므로 False를 반환합니다.
>>> y.startswith('라')
False
>>>endswith(‘문자’, 시작인덱스, 끝인덱스) : 끝 인덱스 값은 찾을 문자 보다 하나 더 많아야 합니다.
>>> x = "0123456789"
>>> y = "가나다라마바사"
>>> x.endswith('9')
True
>>> x.endswith( '4', 0, 4)
False
>>> x.endswith( '4', 0, 5)
True
>>> y.endswith('사')
True
>>> y.endswith('라', 1, 5)
False
>>> y.endswith('라', 1, 4)
True
>>>find ( ‘문자’, 시작 위치 )
찾을 문자를 입력하면 찾아진 인덱스의 첫자리를 반환해 줍니다. 값이 없으면 -1을 반환합니다.
인덱스는 0 부터 시작한다는 사실 잊지 않으셨죠?
>>> x = "0123456789"
>>> y = "가나다라마바사"
>>> y.find('라')
3
>>> x.find('5')
5
>>> x.find('5', 7)
-1
>>> y.find('타')
-1
#####
### ‘56’이 5 부터 시작하므로 시작 인덱스 값을 반환합니다.
>>> x.find('56’)
5
### ‘1’이 있지만 시작이 4 부터 시작이므로 없다고 반환해 줍니다.
>>> >>> x.find('1’, 4)
-1
### ‘다가’ ‘다’ 와 ‘가’ 는 있지만 연속적으로 ‘다가‘는 없으므로 -1을 반환합니다.
>>>>>> y.find('다가')
-1rfind ( ‘문자’, 시작 위치, 끝의 위치)
문자열의 끝에서 부터 찾아 처음 일치 하는 값을 반환 합니다.
아래 find와 rfind 를 비교해 보았습니다. rfind는 특정 문자가 문자열 중 마지막 일치 하는 위치를 찾고자 할 때 유용합니다.
>>> x = "ab ab ab"
### ‘ab ab ab’ 중 붉은 색 글자의 ‘a’ 를 찾음
>>> x.find('a')
0
### ‘ab ab ab’ 중 붉은 색 글자의 ‘a’ 를 찾음
>>> x.rfind('a')
6
### ‘ab ab ab’ 중 붉은 색 글자의 ‘a’ 를 찾음
>>> x.rfind('a', 5)
6
### ‘ab ab ab’ 중 붉은 색 글자의 ‘a’ 를 찾음
>>> x.find( 'a', 0, 5 )
0
### ‘ab ab ab’ 중 붉은 색 글자의 ‘a’ 를 찾음
>>> x.rfind( 'a', 0, 5 )
3문자 또는 문자열을 찾고자 할 경우 index() 라는 메소드도 있습니다.
Index() 의 경우 find() 와 같은 역할을 합니다. 쓰임새도 같습니다.
그런데 다른 한가지는 찾고자 하는 문자 또는 문자열이 없을 경우 find() 는 -1을 반환하고 index() 는 오류를 발생 시킵니다.
>>> x = "ab ab ab“
>>> x.index('a', 3, 5)
3
>>> x.index('a', 3, 6)
3
>>> x.rindex('a', 3, 6)
3
>>> x.rindex('a', 3, 8 )
6
>>> x.index('a', 3, 8 )
3
>>>
>>> x.find('a', 3, 8)
3
>>> x.index('aa')
Traceback (most recent call last):
File "", line 1, in
x.index('aa')
ValueError: substring not found
>>> >>> x.find('aa')
-1위의 메소드도 제법 많이 사용 됩니다.
예를 들면 .xlsx 로 끝나는 파일 만 열어서 작업을 하는 프로그램이 있다고 가정하면 endswith()를 사용하여 파일을 찾는데 사용 할 것입니다.
또한 문자열 중에 특정한 문자를 찾는 find 도 많이 사용 됩니다.
문자열 포맷팅에 관해 이번 포스팅에서 작성 하려 했지만 양이 좀 많아서 나누어 작성합니다.
다음 포스팅은 문자열 포맷 이란 주제로 포스팅 예정입니다.
반응형'IT 이야기 공간 > 프로그램 언어' 카테고리의 다른 글
파이썬 다양한 메소드(함수)로 문자열 판별 확인하기 (0) 2020.06.10 파이썬 다양한 메소드(함수)로 문자열 포맷팅 (0) 2020.06.09 파이썬 다양한 메소드(함수)로 문자열 나누기, 대소문자 변환, 정렬하기 (0) 2020.06.04 파이썬 기초 데이터 유형 – 집합 ( Set ) 자료형 (0) 2020.06.03 파이썬 기초 데이터 유형 – 딕셔너리 ( Dictionary ) 자료형 (0) 2020.06.02