본문 바로가기
프로그래밍 언어/Python

[Python] 문자열(인덱싱, 슬라이싱, 시퀀스 연산자, 내장함수)

by Jinwood 2018. 2. 22.
반응형



파이썬 문자열은 str 클래스로 구현되어 있다. 

str은 한글을 포함한 유니코드로 표현되는 모든 문자를 표현할 수 있는 순서를 갖는 시퀀스 자료형이다.


name = 'jinwood'에서 name[0] = 'J'와 같이 지정문으로 str 자료형의 한 문자를 변경할 수 없다.

앞서 파이썬 기초의 자료형에 설명했듯이 str 자료형은 변경 불가능(immutable) 자료형이다.


파이썬 자료형에 대해서 알고싶다면 : http://hvyair.tistory.com/15


문자열은 단일 따옴표('')와 이중 따옴표("") 내부에 문자를 표시한다. 

예를 들어 'example'과 "example"은 같은 문자열이다. 

따옴표 내부에서 따옴표를 사용할 수도 있다. 이중 따옴표를 3개 사용하면 내부가 주석으로 처리된다.

문자열의 인덱싱(indexing) 및 슬라이싱(slicing)

str 객체는 정수 인덱스로 항목을 선택할 수 있다. 시퀀스 객체에서 슬라이싱에 의해 일정 범위의 항목을 선택한다.

각 문자열의 문자는 대괄호([ ])를 사용해서 선택할 수 있다. 시작 위치는 0부터 시작하며, -1은 뒤쪽으로부터 선택한다.


위에서 설명한 name = 'jinwood' 라는 문자열에서 name[0] = 'j', name[1] = 'i', name[2] = 'n'이다.

또한 name[-1] = 'd', name[-2] = 'o', name[-3] = 'o' 이다.


'jinwood'는 0~6번째 까지 인덱스가 있으므로, name[7]을 입력하면 인덱스 범위가 벗어나므로 IndexError가 발생한다.


   


문자열의 슬라이싱 형식은 다음과 같다.


형식 : s[i:j:k]


1. i는 시작 인덱스, j는 종료 인덱스, k는 증분이다.

2. 시작 인덱스 i는 포함하고, 종료 인덱스 j는 포함하지 않는다.

3. i가 생략되면 i=0 이고, j가 생략되면 j=len(s)이며, k가 생략되면 k=1이다.

시퀀스 연산자

시퀀스 연산자에는 연결 연산자(+), 반복 연산자(*), 포함 연산자(in) 등이 있다. 

이 연산자들은 str, bytes, list, tuple에서 공통으로 사용할 수 있다.


1. 연결 연산자(+)

  + 연산자를 이용하여 두 개의 시퀀스 자료형을 연결하며 하나의 객체로 생성한다.

  예를 들어 'na' + 'me'는 'name'을 생성한다.


2. 반복 연산자(*)

  * 연산자를 사용하여 시퀀스의 항목을 반복하며 객체를 생성한다.

  예를 들어 'me'*5는 'mememememe'를 생성한다.


3. 포함 연산자

  in 연산자를 이용하여 부분 시퀀스가 포함되어 있는지 확인하며, True 또는 False를 반환한다.

  예를 들어 'amp' in 'example' 는 True이다. 'amp' not in 'example'은 False이다.

문자열(str)관련 주요 내장함수

len()과 eval(), exec()는 자주 사용하게 되는 함수이다. 

문자열에 대해서 설명하고 있지만, len()은 시퀀스 자료형인 list 또는 tuple에서도 사용 가능하다.

해당 문자열의 항목 개수(길이)를 반환하거나, list의 항목 개수를 반환한다.



eval()은 수식만 가능하며 구문은 불가능하다. exec()는 구문이 가능하다.

(수식은 a+20, 14.234/1.2와 같고, 구문은 a = a+20, b = 14.234/1.2와 같다.)


eval()을 사용할 때 아래 표의 예와 다르게 eval('a=a+20')과 같이 사용한다면 에러가 나타난다.

a = a+20과 같이 사용하고자 하는 경우 exec() 함수를 사용한다.


exec() 함수는 이중 따옴표(""", """) 내부에 작성된 파이썬 코드도 실행 가능하다.


   



반응형

댓글