본문 바로가기

데이터사이언스/Python

파이썬에서 문자와 문자열! 문자열의 변환, 출력, 연산, 인덱싱, 슬라이싱 (feat. 이스케이프 코드)

컴퓨터는 원래 숫자를 전하기 위해 만들어진 기계지만 오늘 날에는 숫자 뿐만 아니라 문자, 이미지, 동영상 등 다양한 정보를 처리할 수 있게 되었다.

 

컴퓨터 프로그래밍에서는 '문자'와 '문자열'이라는 개념이 있다.

 

문자 (character) = '파이썬' 이라는 단어는 '파', '이', '썬' 이라는 문자의 조합이다.

문자열 (string) = 문자가 2개 이상 연속된 경우 👉 '파', '이', '썬' 이라는 문자의 조합

 

컴퓨터에서는 문자열의 시작점과 끝지점에 따옴표 (' or ")를 찍어 구분하게 한다.

 

컴퓨터의 모든 데이터는 이진 데이터 (Binary data)이기 때문에 입력된 문자열을 변환해주는 작업이 필요하다.

- 인코딩: 컴퓨터가 이해할 수 있도록 0과 1로 변환하는 것 (=코드화 = 암호화 = 부호화)

- 디코딩: 사람이 이해할 수 있도록 바꿔주는 것

 

이렇게 문자열 인코딩 표준에는 2가지가 있다.

1. 아스키 코드 (ASCII, American Standard Code for Information Interchange)

- 알파벳 52자 (A ~ z)

- 숫자 10자 (0 ~ 9)

- 특수기호 66자 (!, @ 등)

 

2. 유니코드 (UNICODE)

- 비영어권 문자 규약

- 언어에 상관없이 모든 문자를 16비트로 표현

 

문자열을 코드로 변화는 걸 파이썬으로 실습해보자.

 

 

ord() : 문자 > 숫자(정수) 변환

# ord() : 문자 > 숫자(정수)로 변환

print(ord('A'))
print(ord('!'))
print(ord('가'))

 

 

 

bin() : 이진수로 변환

# bin() : 이진수로 변환
print(bin(65))
print(bin(ord('파')))

 

 

chr() : 숫자(정수) > 문자로 변환

# chr() : 숫자(정수) > 문자로 변환
print(chr(65))
print(chr(66))
print(chr(97))
print(chr(44032))
print(chr(44033))

 

 

문자 > 숫자(정수) > 이진수로 변환

# 문자 > 숫자(정수) > 이진수로 변환

str = ''
for c in '파이썬':
    print(format(ord(c), 'b'), end = ' ')

 

 

 

이제 본격적으로 파이썬에서 문자열을 표현해보자

문자열 👉 따옴표 활용!!

print('Hello')
print("Hello")
print("Hello 'world")
print('Hello "world"')

 

 

문자열 붙여쓰기, 반복하기 (문자열과 연산자 활용)

# + 연산자 : 붙여쓰기
print('Hello' + 'python')
print('Hello', 'python') # 스페이스 한 칸

print()
# * 연산자 : 반복
print('Hello' * 3)
print('-' * 30)

 

 

 

문자열의 인덱싱 (Indexing) 과 슬라이싱 (Slicing)

# 인덱싱(Indexing) (문자의 자리수)

a = 'Hello'
print(a[0])
print(a[2])
print(a[4])
# print(a[6]) #6번째 자리는 없기 때문에 실행 시 오류 발생

# 슬라이싱(Slicing)
print(a[0:2]) #[start:end:step] start <= x < end, step 생략 시 1
print(a[:2]) # 입력없을 경우 맨 앞
print(a[2:]) # 입력없을 경우 맨 끝
print(a[::2])

 

 

 

이스케이프 코드 (Escape Code)

👉 프로그래밍 할 때 사용하는 미리 약속된 '문자 조합'

주로 출력물을 보기 좋게 정렬할 때 활용

 

[이스케이프 코드 정리]

\n : 줄바꿈

\t : 탭 간격

\\ : \ 를 표현할 때

\' : 작은 따옴표 표현할 때

\" : 큰 따옴표 표현할 때

\r : 캐리지 리턴 (줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)

\f : 폼 피드 (줄 바꿈 문자, 현재 커서를 다음 줄로 이동)

\a : 벨 소리 (출력 시 '삑' 소리 재생)

\b : 백 스페이스

\000 : 문자

 

# 이스케이프 코드 (Escape Code)

print("totoro's \"test\"")
print("\\")
print('Hello \nworld')
print('Hello\tworld')

 

# 이스케이프 코드 연습 문제

print("Mary's cosmetics")
print('박씨가 소리질렀다. "도둑이야."')
print('"C:\Windows"')

print()
print('==', '이스케이프 코드 활용', '==')
print()

print('Mary\'s cosmetiscs')
print("박씨가 소리질렀다. \"도둑이야.\"")
print("\"C:\Windows\"")