[Python] 문자열 다루기

개린이·2023년 9월 5일
0

Python

목록 보기
6/20
post-thumbnail

문자열이란?

파이썬에서 문자열은 텍스트 데이터를 다루는 데 사용되는 중요한 데이터 타입이다. 문자열은 작은따옴표(') 나 큰 따옴표("), 세 개의 따옴표 (''',""")로 둘러싸인 텍스트로 표현된다.

🖥️예제

str1 = '오늘도 즐거운 파이썬 수업'
print(str1)
str2 = '오늘도 즐거운 파이썬 수업'
print(str2)
str3 = '''류지:
오늘도 즐거운 파이썬
수업 '''
print(str3)


파이썬의 문자열은 유니코드(Unicode) 문자의 시퀀스로 구성되며, 문자열 값은 메모리에 저장되고 해당 값은 불변(immutable)한 특성을 가진다. 파이썬은 문자열 리터럴공유 문자열 최적화와 같은 기술을 사용하여 문자열 메모리를 효율적으로 다룰 수 있도록 설계되어있다.

유니코드(영어: Unicode)는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

  • 문자열 리터럴과 메모리 할당 : 파이썬에서 문자열 리터럴(값)을 생성하면, 값이 메모리에 저장된다. 예를 들어 "Hello, world!"라는 문자열을 생성하면 해당 문자열 값이 메모리에 저장되고, 변수에 할당할 때는 해당 값의 참조(reference)가 변수에 저장된다.

  • 공유 문자열(String Interning) : 작은 크기의 문자열 리터럴은 '공유 문자열' 이라는 메모리 최적화 기술을 활용하며 동일한 문자열 값이 여러 변수에 할당되면, 파이썬은 메모리에 단일로 문자열을 저장하고 여러 변수가 해당 값을 참조하게 하여 메모리 사용을 줄일 수 있다.

🖥️예제

a = "Hello"
b = "Hello"

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

변수 a 와 b의 주소값이 동일한 부분을 확인할 수 있다.

  • is 연산자는 파이썬에서 두 객체의 식별(identify)을 비교할 때 사용되는 연산자이며 객체의 긱별은 메모리내에서 객체가 저장된 위치를 말한다. is 연산자는 두 객체가 동일한 메모리 위치에 저장되어 있는지 여부를 판단한다.

  • id() 함수는 주소값을 확인할 수 있는 함수이다.



문자열 재할당

파이썬에서 문자열은 불변(immutable)한 데이터 타입이므로 같은 변수에 문자열을 재할당하는 경우, 새로운 문자열 객체가 생성되고 변수는 새로운 문자열 객체를 참조하게 됩니다. 이전 문자열 객체는 변경되지 않는다.

변수 자체의 메모리 주소는 파이썬에서 직접 액세스할 방법이 없다.

🖥️예제

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

text = 'Hello'
print(id(text))

text = 'Python'
print(id(text))



문자열 함수와 연산자

  1. 문자열 길이 확인하기- len() : 문자열의 길이를 반환

🖥️예제

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


2. 문자열 합치기- + : 두 문자열을 합쳐 새로운 문자열을 생성

🖥️예제

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


3. 문자열 반복하기- * : 문자열을 여러 번 반복하여 새로운 문자열을 생성

🖥️예제

apple = "🍎" * 10
print(apple)


4. 문자열 인덱싱과 슬라이싱 : 문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있다

🖥️예제(인덱싱)

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

🖥️예제(인덱싱)

str1 = '문자열 내부의 문자에 인텍스를 사용하여 접근하거나 슬라이스할 수 있습니다.'
print(str1)
print(str1[0:6])
print(str1[8:16])
print(str1[:16]) #처음부터 16전까지
print(str1[8:]) #8번부터 끝까지
print(str1[:]) #전체




문자열 메서드

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

  1. upper()와 lower() - 대소문자 변환

🖥️예제

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


2. count() - 특정 문자열의 등장 횟수 확인

🖥️예제

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


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

🖥️예제

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. replace() - 문자열 대체

🖥️예제

text = "Hello, Python!"
new_text = text.replace("Python", "World") # in-place 연산

print(new_text)


5. strip() - 문자열 양쪽 공백 제거

🖥️예제

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


6. split() - 문자열 분리

🖥️예제

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

print(names)

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


7. join() - 문자열 결합

🖥️예제

text = 'Hello'
print('🍎'.join(text))


8. startswith()와 endswith() - 접두사와 접미사 확인

🖥️예제

text = 'Hello, Pyhon!'
starts_with_hello = text. startswith("Hello")

print(starts_with_hello) # ;bool 타입으로 출력
print(type(starts_with_hello))

ends_with_wold = text.endswith('world!')
print(ends_with_wold)



문자열 함수 vs 문자열 메서드

  1. 문자열 함수
    문자열 함수는 파이썬 내장 함수로, 문자열을 다루거나 처리하는 데 사용된다. 이러한 함수들은 문자열을 입력으로 받아 처리한 후 결과를 반환한다.
    len() 등..

  2. 문자열 메서드
    문자열 메서드는 문자열 자체에 대해 호출되는 함수로, 문자열 내부에서 작동하는 동작을 수행한다.
    문자열 객체에 점(.)을 찍고 메서드 이름을 호출하는 방식으로 사용한다.
    '문자열'.join(), 문자열.split()

0개의 댓글

관련 채용 정보