문자열은 시퀀스 자료형(sequence data type)이다.
저장공간 1씩 증가하는 것을 확인 = 연속적
문자열과 메모리 공간
- 컴퓨터 공학자들은 이러한 문자를 처리하기 위해 이진수로 변환되는 표준 규칙을 만들었다.
ASCII, CP949, MS949, UTF-8 이러한 규칙을 인코딩(encoding)이라고 한다.
- 컴퓨터는 문자를 직접 인식하지 못한다.
- 컴퓨터는 문자를 숫자로 변환하여 인식한다.
- 사람들은 문자를 숫자로 변환하기 위한 규칙을 만들었다.
- 일반적으로 이 규칙은 1개의 영문자를 1바이트, 즉 2의 8승 정도의 공간에 저장될 수 있도록 정하였다.
문자열의 인덱싱
- 리스트처럼 글자 하나하나가 상대적인 주소(offset)를 가지는데, 이 주소를 사용해 할당된 값을 가져오는 인덱싱을 사용할 수 있다.
# Python 문자열의 인덱싱
a = "abcde"
print(a [0], a [4])
print(a [-1], a [-5]) # -1은 뒤에서 첫 번째 e , -5는 뒤에서 5번째인 a
슬라이싱(slicing) : 문자열의 주소 값을 기반으로 문자열의 부분 값을 반환하는 기법이다.
# 문자열의 슬라이싱
a = "Hello World, Hello Python"
print(a [0:6], "AND", a [-9:]) # a변수의 0부터 5까지, -9부터 끝까지
print(a [:]) # 처음부터 전체 출력
print(a [-50:50]) # 범위를 넘어갈 경우 자동으로 최대 범위를 지정한다.
문자열의 연산
- 가장 기본적인 연산은 리스트의 연산과 같다. 예를 들어, 문자열 변수 'a'와 정수형인 2의 'a+2'와 같은 연산은 동작하지 않는다. 하지만 'a*2'와 같은 연산은 지원한다.
# 문자열의 연산
a = "Time"
b = "stop"
print(a + " " + b) # 덧셈으로 a와 b변수 연결
print(a*2 + " " + b*2) # 곱하기로 반복 연산 가능하다.
if 'T'in a:print(a) # 'T'가 a에 포함되었는지 확인 존재하면 Time출력
else:print(b)
## 문자열의 연산
int_value =2
#print("결과는"+int_value) # 정수형의 연산으로 인식해 덧셈 연산이 실행되지 않는다.
print("결과는", int_value)
문자열의 연산 함수
upper() 함수 : 문자열을 대문자로 변환하는 함수
lower() 함수 : 소문자로 변환하는 함수
# upper, lower 함수 사용 예제
title = "Time X Stop"
title.upper() # title 변수를 모두 대문자로 변환
title.lower() # title 변수를 모두 소문자로 변환
title() 함수 : 영어신문의 헤드라인처럼 각 단어의 앞글자만 대문자로 바꾸는 함수
capitalize() 함수 : 첫 번째 글자만 대문자로 바꾸는 함수
title = "TIME X STOP"
print(title.title()) # title 변수의 각 단어의 앞글자만 대문자로 변환
print(title.capitalize()) # title 변수의 첫 번째 글자만 대문자로 변환
count() 함수 : 해당 문자열에서 특정 문자가 포함된 개수를 반환
isdigit() 함수 : 해당 문자열이 숫자인지를 True 또는 False로 값을 반환
startswith() 함수 : 해당 문자열로 시작하는지를 True 또는 False로 값을 반환
# count, isdigit, startswith
title = "Time X Stop"
print(title.count("t")) # 대소문자 구분하기 때문에 t를 두 개 사용해도 1개라고 나온다.
print(title.lower(). count("t")) # 소문자로 변환하고 t를 찾으면 2개
print(title.isdigit()) # title 변수의 문자열이 숫자인지 여부 반환
print(title.startswith("t")) # title 변수가 'T'로 시작하는지 여부 반환