[Python] Chapter4 문자열
Chapter4 문자열
문자열 자료형
- 문자열 (String) 은 연속된 문자들의 모임을 의미
- 문자열은 문자로 구성된 순서가 있는 수열
- 문자열은 일단 생성하면 그 내용을 바꿀 수 없음
- indexing, slicing 기법을 사용하여 데이터 참조
- 큰따옴표 , 작은 따옴표 , 큰따옴표 3 개 연속 , 작은따옴표 3 개 연속 중 어느 것으로 시작해서 양쪽 둘러싸기로 문자열을 정의
- 문자열의 데이터가 여러 줄인 경우
- 문자열 데이터에 줄바꿈 문자 n 을 삽입
- 연속된 작은따옴표 3 개 또는 큰따옴표 3 개 사용
- 현재 입력 창의 가로 길이보다 더 긴 문자열을 입력할 경우는 기호를 사용하여 여러 줄에 걸쳐 작성할 수 있음 줄바꿈이 아님
특수문자
- 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 문자 조합
- 주로 출력물을 보기 좋게 정렬하는 용도로 이용
- backslash(/) 와 단일 문자로 구성된 조합으로 코딩 시 표현할 수 없는 문자 또는 control 들을 표시
문자열 연산
-
- 연산자 : 두 문자열 연결하기
-
- 연산자 : str * n 인 경우 문자열 str 을 n 번 반복
- in 연산자
- 지정된 부분이 문자열 안에 존재하는지를 확인
- 있으면 True 를 반환 , 없으면 False 를 반환
- not in 연산자 (in 연산자 반대 개념)
문자열 인덱싱
- 인덱스는 문자열의 각 문자마다 번호를 매기는 것
- 인덱스 범위
- 양수 인덱스 : 0 ~ len (문자열) 1
- 음수 인덱스 : len (문자열 ) ~ 1
- len ( 문자열 ) 함수 : 입력 받은 문자열의 길이를 반환
- 인덱스 표기 방식은 대괄호 ( [ ] ) 안에 인덱스 번호를 기입하여 해당 문자열에서 지정한 문자열을 참조하는 것
문자열 슬라이싱
- 문자열의 인덱스를 기반으로 문자열의 부분 문자열을 반환 원본 문자열 은 그대로 유지 하는 방법
- 문자열에서 일부 문자들 추출에 사용
- 인덱싱과 슬라이싱은 다른 sequence 데이터 형 (list, 에서도 사용 가능
- 문자열 slicing 표기법
- string[ start : end : step]
- start: 시작 인덱스 값 . default 값은 0
- end: (end 1) 인덱스까지 추출 . default 값은 len (문자열)
- step: 추출 간격 . default 값은 1
- string[ start : end : step]
- 문자열의 일부를 추출하여 새로운 변수에 저장
- 문자열 을 슬라이싱해서 새로운 변수 a 에 저장해도 원본 문자열은 변하지 않음
- 문자열의 데이터는 변경할 수 없음 .
- 문자열 객체는 변경 불가능 . (immutable 한 자료형)
- 문자열 객체가 일단 생성되면 , 그 객체의 내용은 변경될 수 없음 .
- Pithon 이라는 문자열을 “Python” 으로 변경안됨. 에러 발생.
문자열 포맷팅(%)
- 문자열 포맷 코드 출력 형식 지정 문자
코드 | 설명 |
---|---|
%s | 문자열 (String). 어떤 데이터 형의 값이든 문자열로 변환 |
%c | 문자 1 개 |
%d | 정수 |
%f | 부동소수 (floating point) |
%o | 8 진수 |
%x | 16 진수 |
문자 | % 자체 |
▪ 특정 서식에 맞춰 숫자를 출력 하는 것이 필요할 때 사용. ▪ 실수 서식 지정
print("average = %10.2f " % 57.467657)
print("average = %10.2f" % 12345678.923)
print("average = %10.2f" % 57.4)
print("average = %10.2f" % 57)
▪ 정수 서식 지정
print("average = %10d" % 59832)
문자열 포맷팅 str.format()
- str.format () : 문자열 포맷팅의 와 유사
- 문자열 오브젝트의 메소드 format() 을 사용
- 문자열에 값을 삽입하고 싶은 위치에 중괄호 {} 지정 .
- format() 함수의 인수로 삽입될 데이터를 지정
코드 | 설명 | 코드 | 설명 |
---|---|---|---|
8.3f | 소숫점이하 3 자리 실수 (8 자리) | , | 천 단위마다 콤마 삽입 |
8.3e | 소숫점이하 3 자리 지수 (8 자리) | 10,d | 10 자리 정수 천 단위마다 콤마 |
5d | 5 자리 정수 | 08d | 8 자리 정수 남는 자리는 0 을 붙임 |
10 | 10 글자로 표시 | +.2f | 소수점이하 2 자리 실수 항상 부호 |
*^30 | 30 글자 가운데 좌우는 * 표시 ) | .2% | 소수점이하 2 자리 백분율 |
print (("{2}, {0}, { 1}".format( 1,2,3))# 3, 1, 2
print ((""||{: 8.3f}||"".format( 3.1415926))# |
print (("{:"{:++. 2f}".format( 3.1415926))# +3.14
print (("|{: 8.3e}|".format( 314.15926))# |3.142e+
print (("|{: 10d}|".format( 12345))# |
print 0 10 d}|"d}|".format( 12345))# |
print (("{:"{:. 2%}"}".format(1/ 3))# 33.33%
x = " hello"; y = abc
print (((("{"{0[1] 1]}, 1[2] 2]}"}". x,y ))))# e, c
print (("{:"{:*^12 }"}". format(" center"))))# ***
문자열 메소드
- str.split () / str.split 구분자 (’’)
- split() 메소드의 인수가 없는 경우는 default 구분자인 space
- 인수로 받은 구분자를 기준으로 문자열을 분리
- 분리된 각각은 또 다른 문자열
- 분리된 문자열들을 리스트 (list) 데이터형 오브젝트의 원소로 담아 반환
- 리스트 데이터형은 추후에 다룸
메소드 | 설명 |
---|---|
lower() | 문자열 데이터를 모두 소문자로 바꾼 문자열을 반환 |
upper() | 문자열 데이터를 모두 대문자로 바꾼 문자열을 반환 |
islower() | 문자열 내의 모든 문자들이 소문자이면 , True 를 반환 |
isupper() | 문자열 내의 모든 문자들이 대문자이면 , True 를 반환 |
isalpha() | 문자열이 알 파벳 영문 , 한글 등 으로만 구성되어 있으면 True 를 반환 |
isnumeric() | 문자열이 숫자 로만 구성되어 있으면 True 반환 |
isalnum() | 문자열이 알파벳과 숫자로만 구성되어 있으면 True 반환 |
swapcase () | 문자열 데이터의 대소문자를 상호 변환한 문자열 반환 |
title( ) | 각 단어의 제일 앞 글자만 대문자로 변환한 문자열 반환 |
replace() | 문자열 내에서 지정한 문자열을 새로운 문자열로 바꾼 전체 문자열을 반환 |
startswith () | 문자열이 매개변수로 입력한 문자열로 시작 하면 True 반환 |
endswith () | 문자열이 매개변수로 입력한 문자열로 끝나 면 True 반환 |
find() | 문자열 내에서 매개변수로 입력한 문자열이 시작하는 인덱스를 반환 존재하지않으면 1 을 반환 . 여러 번 존재하면 첫번째 발견하는 인덱스 반환 |
rfind () | 문자열 내에서 매개변수로 입력한 문자열 을 뒤에서부터 찾아서 인덱스 반환 존재하지 않으면 1 을 반환 |
count() | 문자열 내에서 매개변수로 입력한 문자열이 몇 번 있는지 그 개수를 반환 |
strip() | 문자열 양쪽에 있는 공백을 제거 한 문자열 반환 ( lstrip () / rstrip (): 왼쪽 오른쪽에서 공백제거 |
center(width) | 주어진 폭의 가운데 중심으로 정렬된 문자열을 반환 ( ljust (width) rjust (width): 왼쪽오른쪽 중심으로 정렬 |
댓글남기기