상세 컨텐츠

본문 제목

문자열 다루기

인공지능_2026/1. 파이썬

by Ryuzy 2026. 4. 13. 17:13

본문

반응형

1. 컴퓨터에서 문자를 저장하는 방법

컴퓨터에서 문자는 사람이 사용하는 글자를 그대로 저장하는 것이 아니라, 각 문자에 대응되는 숫자 코드로 변환되어 저장됩니다. 이러한 변환 규칙을 문자 인코딩이라고 하며, 대표적으로 ASCII와 Unicode가 있습니다. 예를 들어 문자 ‘A’는 특정 숫자 값으로 바뀌고, 이 숫자는 다시 이진수 형태로 메모리에 저장됩니다. 따라서 컴퓨터는 문자를 직접 처리하는 것이 아니라 숫자로 변환된 데이터를 처리하며, 화면에 출력할 때 다시 문자 형태로 변환하여 보여줍니다.

 

1. 아스키 코드

American Standard Code for Information Interchange의 약자로, 미국에서 개발된 문자 인코딩 표준입니다. 아스키 코드는 7비트로 구성되어 총 128개의 문자(0~127)를 표현합니다.

 

2. 유니코드

전 세계의 다양한 문자와 기호를 포함하기 위해 개발된 표준입니다. 유니코드는 각 문자를 고유한 코드 포인트로 표현하며, 다양한 인코딩 방식(UFT-8, UTF-16, UTF-32 등)을 지원합니다.

 

UTF(Unicode Transformation Format)

UTF(Unicode Transformation Format)는 문자를 컴퓨터에서 저장하고 전송하기 위해 Unicode 문자 집합을 실제 바이트 형태로 변환하는 인코딩 방식입니다. 대표적으로 UTF-8, UTF-16, UTF-32가 있으며, 이들은 문자를 서로 다른 바이트 길이로 표현합니다. 그중 UTF-8은 가변 길이 인코딩 방식으로 영어는 1바이트, 한글과 같은 문자는 여러 바이트로 표현하며, 저장 효율성과 호환성이 뛰어나 현재 가장 널리 사용되는 인코딩 방식입니다.

 

3. 컴퓨터의 용량 단위

👉 컴퓨터는 데이터를 0과 1로 저장한다.
👉 8bit가 1Byte이며, 이것이 기본 단위이다.
👉 컴퓨터는 2진수 기반이기 때문이기 때문에 용량 단위는 1024 기준으로 증가한다.

 

 

2. 파이썬의 문자열

문자열(String)은 문자들의 순서 있는 집합으로, 텍스트 데이터를 표현하기 위해 사용되는 자료형입니다. Python에서는 작은따옴표(')나 큰따옴표(")로 문자열을 표현하며, 내부적으로는 문자를 숫자로 변환한 Unicode 기반 객체로 저장됩니다. 문자열은 인덱스를 통해 각 문자에 접근할 수 있고, 수정이 불가능한 immutable 특성을 가지며, 연결·슬라이싱·길이 확인 등 다양한 연산을 지원합니다.

 

인덱스

인덱스(Index)는 데이터 구조에서 각 요소의 위치를 나타내는 번호로, Python에서는 리스트나 문자열과 같이 순서가 있는 자료형에서 특정 값을 찾거나 접근할 때 사용됩니다. 인덱스는 0부터 시작하며, 예를 들어 리스트의 첫 번째 요소는 인덱스 0을 가지며, 음수 인덱스를 사용하면 뒤에서부터 접근할 수도 있습니다. 이를 통해 원하는 위치의 데이터를 효율적으로 조회할 수 있습니다.

 

str1 = '오늘도 즐거운 파이썬 수업'
print(str1)
str2 = "오늘도 즐거운 파이썬 수업"
print(str2)
str3 = '''김사과:
오늘도 즐거운 파이썬
수업 '''
print(str3)

 

a = "Hello"
b = "Hello"

print(a is b)  # 출력: True (동일한 문자열 객체를 참조)

 

리터럴 공유

리터럴 공유(literal sharing)는 동일한 값을 가지는 불변 객체(정수, 문자열 등)를 여러 번 사용할 때 Python이 메모리 효율을 위해 하나의 객체만 생성하고 여러 변수가 이를 함께 참조하는 동작을 의미합니다. 다만 모든 리터럴이 항상 공유되는 것은 아니며, Python의 내부 최적화(인터닝)에 따라 짧고 단순하거나 컴파일 시점에 결정 가능한 문자열·정수 등은 공유될 가능성이 높지만, 공백이 포함되거나 런타임에 생성된 문자열 등은 공유되지 않을 수도 있습니다.

 

a = "Hello"
a = a + ", python!"  # 새로운 문자열 객체 생성

text = "Hello"
print(id(text))  # 이전 문자열 객체의 메모리 주소 출력

text = "Python"  # 변수에 새로운 문자열 할당
print(id(text))  # 새로운 문자열 객체의 메모리 주소 출력

 

 

3. 문자열 함수와 연산자

1. 문자열 길이 확인하기

text = "Hello, Python!"
print(len(text))

 

2. 문자열 합치기

name = "김사과"
age = "20살"
message = name + ", " + age
print(message)

 

3. 문자열 반복하기

apple = "🍎" * 10
print(apple)

 

4. 문자열 인덱싱과 슬라이싱

인덱싱(Indexing)은 순서가 있는 자료형(리스트, 문자열, 튜플 등)에서 인덱스 값을 이용해 특정 위치의 요소에 접근하는 방법을 의미합니다. Python에서는 인덱스가 0부터 시작하며, 데이터[인덱스] 형태로 원하는 값을 조회할 수 있고, 음수 인덱스를 사용하면 뒤에서부터 요소에 접근할 수도 있습니다. 이를 통해 데이터 전체가 아닌 필요한 위치의 값만 빠르게 가져올 수 있습니다.

 

슬라이싱(Slicing)은 순서가 있는 자료형(문자열, 리스트, 튜플 등)에서 인덱스 범위를 지정하여 원하는 부분만 추출하는 방법을 의미합니다. Python에서는 데이터[start:end] 형태로 사용하며, start 인덱스부터 end 이전 인덱스까지의 요소를 반환하고, 필요에 따라 step 값을 추가해 간격을 지정할 수도 있습니다. 슬라이싱을 활용하면 데이터의 일부를 쉽게 잘라내거나 복사할 수 있어 효율적인 데이터 처리에 매우 유용합니다.

str = '문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.'
print(str)
# 인덱싱
print(str[0])
print(str[1])
print(str[12])
print(str[-1])
print(str[-2])

 

str = '문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.'
print(str)
# 슬라이싱
print(str[0:6])
print(str[8:16])
print(str[:16])
print(str[8:])

 

 

4. 문자열 메서드

문자열 메서드는 문자열 객체에 적용되는 함수로, 문자열을 조작하거나 변환하는 다양한 작업을 수행할 수 있게 해줍니다.

 

1. 대소문자 변환

text = "Hello, Python!"
print(text.upper())
print(text.lower())

 

2. 특정 문자열의 등장 횟수 확인

text = "Hello, Python!"
print(text.count('l'))
print(text.count('ll'))

 

3. 특정 부분 문자열의 첫 번째 등장 위치(인덱스) 확인

text = "Hello, Python!"
print(text.find('l'))
print(text.find('ll'))
print(text.find('z'))
print(text.rfind('l'))
print(text.find('o', 5))

 

4. 문자열 대체

text = "Hello, Python!"
new_text = text.replace("Python", "World")

print(new_text)

 

5. 문자열 양쪽 공백 제거

text = "   Hello, Python!   "
print(text)
print(text.strip())

 

6. 문자열 분리

text = '김사과 반하나 오렌지 이메론'
names = text.split() # 공백을 기준으로 분리
print(names)

text = '김사과,반하나,오렌지,이메론'
names = text.split(',') # ','을 기준으로 분리
print(names)

 

7. 문자열 결합

address = ' '.join((city, district, street))
print('주소:', address)

 

8. 접두사와 접미사 확인

text = "Hello, Python!"
starts_with_hello = text.startswith("Hello")
ends_with_world = text.endswith("World!")

print(starts_with_hello)
print(ends_with_world)

 

문자열은 불변(Immutable) 데이터 타입

문자열 객체가 생성된 후에는 그 값을 바꿀 수 없다는 것을 의미합니다. 예를 들어, 한 번 생성된 문자열 객체 내에서 특정 문자를 바꿀 수 없습니다.

my_string = "Hello"
my_string[0] = "h"  # 오류 발생!

 

반응형

'인공지능_2026 > 1. 파이썬' 카테고리의 다른 글

컬렉션 타입(리스트, 튜플)  (1) 2026.04.15
연산자  (0) 2026.04.14
파이썬의 입력과 출력  (0) 2026.04.14
파이썬 변수  (0) 2026.04.13
Python 시작과 개발환경 구축  (0) 2026.04.11

관련글 더보기