본문 바로가기

Python 기초

파이썬 기초(3)-문자열과 메서드(Method)

*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*

1. 문자열

문자열은 파이썬에서 텍스트 데이터를 다루는 데이터 타입입니다. 주로 '(작은 따옴표), "(큰 따옴표), "'(따옴표3개)를 사용한 텍스트로 표현합니다.

# 문자열 예시
asd='문자열 예시'
print(asd)

# '''사용한 문자열 예시
qwe=''' 따옴표 3개로
표현해본
파이썬'''
print(qwe)

1-1. 공유 문자열(string interning)

여러 변수에 동일한 문자열이 할당된다면, 파이썬은 단일 메모리 데이터 값으로 저장합니다. is연산자를 통해서 두 변수의 메모리 값이 동일한지 판단할 수 있습니다. is연산자는 print(변수1 is 변수2) 형태로 사용됩니다.

# is연산자를 통해 변수의 메모리 값 확인하기
# 동일한 경우
a='a'
b='a'
print(a is b)
# 다른 경우
c='c'
d='d'
print(c is d)

동일한 경우 True가 나오지만, 다른 경우 False 출력

2. 문자열 재할당

파이썬의 문자열은 데이터 타입은 변하지 않으므로 값이 할당된 변수에 재할당할 경우에는 새 문자열이 메모리값으로 들어갑니다. 기존의 메모리값(문자열 객체)은 그대로 남아있습니다.

# 기존 문자열에 새 문자열 더하기
a='abc'
b=a+'efg'
print(b)

2-1. 객체(메모리 값) 주소 확인하기

id연산자를 이용하여 변수에 할당된 메모리 값의 주소를 확인합니다. print(id(변수))형태로 사용됩니다.

# 메모리값 주소 확인
qwe=325
print(id(qwe))
rt=325
print(id(rt))
s='hola'
print(id(s))
d='hola'
print(id(d))

메모리값이 정수형일 경우 값이 같아도 주소가 다르다. 반면 문자열일 경우 주소는 동일하게 나온다.

3. 문자열 함수와 연산자

문자열에서 사용하는 함수 종류는 다음과 같습니다.

3-1. 문자열 길이 확인

len()함수로 문자열의 길이, 글자수를 확인합니다. print(len(변수)) 형태로 사용됩니다.

# 글자수 확인
s='qweasdzxc'
print(len(s))

참고: length의 준말 len입니다.

3-2. 문자열 합치기

#문자열 합치기
sd='asd'
ws='zxc'
sdws=sd+', '+ws
print(sdws)

중간에 ', '를 넣어 임의로 구분

3-3. 문자열 반복

# 문자열 반복
r='s'*15
print(r)

3-4. 문자열 인덱싱(Indexing)

인덱싱이란 해당 자릿수에 맞는 문자열의 문자를 가져오는 일입니다. print()함수 안에 [](대괄호)를 사용하여 해당 순번의 문자를 가져옵니다. 인덱싱을 할 때, 순번은 1이 아닌 '0'부터 시작하는 것을 유의해야 합니다. 또한 순번에는 들여쓰기(공백)도 포함합니다. print(변수[순번]) 형태로 사용됩니다.

# 인덱싱
cold='it is so cold'
print(cold[0])
print(cold[9])

[0]순번인 i와 [9]순번인 c 출력

3-5. 문자열 슬라이싱

슬라이스(slice)를 한다는 말로 슬라이싱(slicing)나눈다는 말입니다. print(변수[시작순번:끝순번]) 형태로 사용됩니다.

# 슬라이싱
cold='it is so cold'
print(cold[4:8])

#슬라이싱2
cold='2024weather'
print(cold[:4])
print(cold[4:])

cold[:4]는 cold[4]를 포함하지 않는다. cold[4:]는 cold[4]를 포함한다. 따라서 슬라이싱을 사용한다면, cold[4]를 기준으로 나뉠 수 있다.

4. 메서드(method)

문자열 메서드는 문자열 객체에 적용되는 함수로, 변수가 아닌 문자열(메모리값)을 변환하는 역할을 수행합니다. 기본적으로 대부분의 메서드는 print(변수.메서드()) 형태로 사용됩니다. 메서드의 종류는 다음과 같습니다.

  • Upper()
  • Lower()
  • Count()
  • Find()
  • Repalce()
  • Strip()
  • Split()
  • Join()
  • Startswith()
  • Endswith()

4-1. 문자 변환

  • upper() : 대문자로 변환
  • lower() : 소문자로 변환
# 문자 변환
a='Youth Hostel'
print(a.upper())
print(a.lower())

4-2. 빈도수 확인

count() 메서드를 이용해, 특정 문자열의 등장 횟수, 빈도수를 확인합니다.

# 빈도수 확인
a='pass'
print(a.count(s))

참고: count는 계산하다 뜻입니다.

4-3. 문자열 문자 위치 확인

find() 메서드를 이용해, 특정 부분의 문자열 등장 위치를 확인합니다. 단, 메서드()안에 ''를 입력합니다.

# 등장 위치 확인
a='passing'
print(a.find('i'))

참고: find는 찾다 뜻입니다.

4-4. 문자열 대체

replace() 메서드를 이용해, 특정 문자열을 다른 문자열로 대체합니다. 단, replace() 소괄호 안에 해당 문자열을 바꾸려는 문자열로 적어줍니다. print(변수.메서드('문자열1', '문자열2') 형태

# 문자열 대체
a='passing python'
print(a.replace('python', 'java'))

참고: replace는 대체하다 뜻입니다.

4-5. 문자열 양쪽 공백 제거

strip() 메서드를 이용해, 문자열에 양쪽 공백이 많을 경우 제거합니다.

a='         passing python          '
print(a.strip())

참고: strip는 벗기다란 뜻입니다.

4-6. 문자열 분리

split() 메서드를 이용해, 문자열을 분리합니다. 

  • 공백 -> ', ' : split() 사용
  • ', ' -> : 공백 : split(', ') 사용
a='passing python'
print(a.split())
print(a.split(', '))

참고: split는 분열,나누어지다 뜻입니다.

4-7. 구분자 메서드

join() 메서드를 활용해, 구분자를 추가합니다. 자료구조를 나눌때 구분하는 용도로 많이 사용합니다. print('구분자'.join(변수)) 형태로 사용됩니다.

a='passing python'
print('🍔'.join(a))

참고: join는 넣는다 뜻입니다.

4-8. 접미사 접두사 확인

  • startswith() : 접두사 확인, startswith('찾고싶은 문자열')
  • endswith() : 접미사 확인, endswith('찾고싶은 문자열')
b='it is cold'
print(b.startswith('it'))
print(b.endswith('is'))