#1.문자열이란?
파이썬에서 문자열은 텍스트 데이터를 다루는 데 사용되는 중요한 데이터 타입이다. 문자열은 작은 따옴표(')나 큰 따옴표("), 세 개의 따옴표(''', """)로 둘러싸인 텍스트로 표현된다.
str1 = '오늘도 즐거운 파이썬 수업'
print(str1)
str2 = "오늘도 즐거운 파이썬 수업"
print(str2)
str3 = '''김사과:
오늘 수업 정말 즐겁네요
그렇죠?'''
print(str3)
결과:
오늘도 즐거운 파이썬 수업
오늘도 즐거운 파이썬 수업
김사과:
오늘 수업 정말 즐겁네요
그렇죠?
파이썬의 문자열은 유니코드(Unicode) 문자의 시퀀스로 구성되며, 문자열 값은 메모리에 저장되고 해당 값은 불변(immutable)한 특성을 가진다. 파이썬은 문자열 리터럴의 공유 문자열 최적화와 같은 기술을 사용하여 문자열을 메모리 효율적으로 다루도록 설계되어있다.
※유니코드란 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.
- 문자열 리터럴과 메모리 할당: 파이썬에서 문자열 리터럴(값)을 생성하면, 이러한 값은 메모리에 저장된다. 예를 들어 "Hello, world!"라는 문자열을 생성하면 해당 문자열 값이 메모리에 저장되고, 변수에 할당할 때는 해당 값의 참조(reference)가 변수에 저장된다.
- 공유 문자열 (String Interning): 작은 크기의 문자열 리터럴은 '공유 문자열'이라는 메모리 최적화 기술을 활용된다. 동일한 문자열 값이 여러 변수에 할당되면, 파이썬은 메모리에 단일로 문자열을 저장하고 여러 변수가 해당 값을 참조하게 된다.
- 문자열 연결과 재할당: 문자열은 불변한 데이터 타입이므로 문자열 연결(+ 연산자)이나 문자열 재할당 시 새로운 문자열 객체가 생성된다. 이전 문자열은 변경되지 않는다.
2. 문자열 재할당
파이썬에서 문자열은 불변(immutable)한 데이터 타입이므로 같은 변수에 문자열을 재할당하는 경우, 새로운 문자열 객체가 생성되고 변수는 새로운 문자열 객체를 참조하게 된다.
이때 이전 문자열 객체는 변경되지 않는다.
a = 'Hello'
b = 'Python'
c = a
d = 'Hello'
print(id(a))
print(id(b))
print(id(c))
print(id(d))
결과 :
132117362880048
132118066394544
132117362880048
132117362880048
※id() 함수는 객체의 고유한 메모리 주소를 반환한다.
3. 문자열 함수와 연산자
3-1. 문자열 길이 확인하기
# len()
text = 'Hello, Python!'
print(len(text))
결과 : 14
3-2 문자열 합치기
name = '김사과'
age = '20살'
message = name + ', ' + age
print(message)
결과 : 김사과, 20살
3-3. 문자열 반복하기
apple = '🍎' * 10
print(apple)
결과:
🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎
3-4. 문자열 인덱싱과 슬라이싱
str1 = '문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.'
print(str1)
결과:문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.
인덱싱
print(str1[0])
print(str1[1])
print(str1[12])
print(str1[-1])
print(str1[-2])
결과:
문
자
인
.
다
슬라이싱
print(str1[0:6]) # 0번째 부터 6번째 전까지
print(str1[8:16])
print(str1[:16]) # 시작점을 생략하면 문자의 처음부터
print(str1[8:]) # 끝나는 지점을 생략하면 문자의 끝부분까지
print(str1[:])
결과:
문자열 내부
문자에 인덱스를
문자열 내부의 문자에 인덱스를
문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.
문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.
4. 문자열 메서드
문자열 메서드는 문자열 객체에 적용되는 함수로, 문자열을 조작하거나 변환하는 다양한 작업을 수행할 수 있게 해준다.
4-1. upper() 와 lower()
text = 'Hello, Python!'
# 대문자로 변환
print(text.upper())
# 소문자로 변환
print(text.lower())
결과:
HELLO, PYTHON!
hello, python!
4-2. count()
text = 'Hello, Python!'
#특정 문자열의 등장 횟수 확인
print(text.count('o'))
print(text.count('ll'))
결과:
2
1
4-3.find()
text = 'Hello, Python!'
#특정 부분 문자열의 첫 번째 등장 위치(인덱스) 확인
print(text.find('o'))
print(text.find('ll'))
print(text.find('z')) #없는 문자면 -1
print(text.rfind('o')) # 오른쪽 부터 위치를 찾는다
print(text.find('0', 6)) # 인덱스 6이후 부터 위치를 찾는다
결과 :
4
2
-1
11
-1
4-4. repalce()
text = 'Hello, Python!'
# 문자열 대체하기
print(text.replace('Python','World'))
결과:
Hello, World!
4-5.strip()
text = ' Hello, Python! '
print(text)
# 문자열 양쪽 공백 제거
print(text.strip())
결과:
Hello, Python!
Hello, Python!
'apple' == 'apple'.strip()
4-6. split()
() 안의 문자 기준으로 문자열을 분리해준다
text = '김사과 반하나 오렌지 이메론'
# 공백을 기준으로 문자열을 분리
names = text.split()
print(names)
결과 :
['김사과', '반하나', '오렌지', '이메론']
text = '김사과 반하나 오렌지 이메론'
# 콤마를 기준으로 문자열을 분리
names = text.split('.')
print(names)
결과:
['김사과 반하나 오렌지 이메론']
4-7. join()
text = 'Hello'
#문자열을 구성하는 각 요소 사이에 특정한 구분자를 삽입
print('a'.join(text))
결과:
Haealalao
4-8. startswith()와 endswith()
startswith() 괄호 안에 있는 문자로 시작하는지 검사
endswith() 괄호 안에 있는 문자로 끝나는지 검사
text = 'Hello, Python!'
print(text.startswith('Hello'))
print(text.startswith('Python'))
print(text.endswith('Python!'))
결과:
True
False
True
'코딩 > 파이썬' 카테고리의 다른 글
파이썬 - 리스트 (0) | 2024.03.13 |
---|---|
파이썬의 변수 (0) | 2024.03.12 |
파이썬의 출력 (0) | 2024.03.12 |
구글 코랩(Google colab) (0) | 2024.03.11 |
파이썬(Python) 개요 (0) | 2024.03.11 |