Python-04.String

안녕하세요 묵호입니다.
이번 글에서는 파이썬의 문자열에 대해 적어보겠습니다.

문자열

파이썬에서 문자열은 text입니다. ‘str’ 타입인 문자열은 문자, 숫자(‘1’, ‘12’), 특수기호 등을 모두 포함합니다. 문자열을 나타내려면 text를 ‘’ 또는 ““로 감싸주면 됩니다.

print(type('text'))
print(type("text"))
# <class 'str'>
# <class 'str'>

파이썬에는 빈 문자열(Empty string)이 있습니다. ‘’, ““와 같이 text가 없는 문자열입니다. 이것은 blank가 아닌, 그저 빈 문자열입니다. 아, 문자열의 최대 길이는 따로 정해져 있지 않습니다. 문자열의 최대 길이는 오직 컴퓨터 메모리에 의해 제한됩니다. 초고성능 컴퓨터라면 매우 긴 문자열을 저장할 수 있겠죠?

문자열 기본 연산자 및 내장 함수

정수/실수에도 다양한 기본 연산자가 있었듯, 문자열에도 다향한 기본 연산자와 내장 함수가 있습니다.

print(len('KyungHee')) # len(): 문자열의 길이를 반환
print('Muk'+'ho') # +: 두 문자열을 하나의 문자열로 반환
print('su' * 5) # *: 문자열을 숫자만큼 반복해 반환
print(int('50')) # int(): 숫자로만 이루어진 문자열을 정수형으로 반환
print(float('15.57')) # float(): 숫자로만 이루어진 문자열을 실수형으로 반환
# 7
# Mukho
# sususususu
# 50
# 15.57


중첩된 인용구문을 사용한 문자열 처리

문자열을 적다보면 ‘’ 또는 ““의 문자열 내부에서 다시 문자열을 포함해야 하는 경우가 있습니다. “It’s”나 ‘It”s’같은 경우는 전혀 문제가 없죠. 하지만 같은 인용구문을 사용할 수 있을까요? ‘It’s’같은 경우 말입니다.
불가능합니다. 우리는 이런 경우에서 “It’s”처럼 다른 인용구문을 사용해주거나, Escape Sequence인 ‘'(backslash), 즉 escape 글자를 사용하는 것입니다. Escape Sequence는 문자열 안에 특수 기호를 나타내거나 눈으로 볼 수 없는 특수 기호를 프로그래밍 언어에서 표현하고자 하는 경우 활용합니다.

text = 'Muk\'ho'
print(text)
print(len(text))
# muk'ho
# 6 (이 경우, 문자열의 길이에 \기호는 포함되지 않습니다.)

Escape Sequence는 다양한 기호들에 대해 존재하는데, 아래는 파이썬에 존재하는 것들입니다.

Escape Sequence Description
Single Quote
Double Quote
\ Backslash
\t Tab
\n Newline
\r Carriage return


print()

print()는 파이썬의 출력 내장 함수로, 입력 파라메타를 여러 개 줄 수 있으며 여러 개일 경우 ,로 구분할 수 있습니다.
‘sep=’은 입력 파라메타로 전달받은 값들 사이에 넣을 기호로, 초기설정 값은 ‘ ‘(공백 한 칸)입니다.
‘end=’는 입력 파라메타를 모두 출력한 마지막 부분에 삽입할 기호로, 초기설정 값은 ‘\n’(new line)입니다.

print(1, '2', "3", sep=" : ", end=" {endl} \"")
# 1 : 2 : 3 {endl} "


input()

자, 출력이 있었다면 입력도 있어야겠죠? input()은 사용자에게서 키보드를 통해 값을 입력 받는 기능을 가진 내장 함수입니다. input()은 결과값이 무조건 str이므로, 필요한 경우 타입의 형변환을 거쳐야합니다.

a = input() # aaa를 입력했다고 가정
b = int(input()) # 5를 입력했다고 가정
print(a, b, sep='/', end='>')
# aaa/5>

input()에는 입력 파라메타를 넣을 수 있습니다. promt 값을 지정하는 것인데, 입력을 받을 때 보여줄 글자나 문자열을 보여주는 것입니다.

a = int(input(promt="숫자 하나를 입력하세요: "))


이것은 제가 코딩테스트 관련 교육을 받았을 때 사용했던 것들입니다.

x, y = map(int(input().split())) # x=1, y=2
a, b = tuple(map(int(input.split()))) # x=1, y=2
c = input().split() # [1, 2, 3]

문자열 슬라이싱

문자열 안에 있는 문자들을 처리하기 위한 방법입니다.
a = ‘Mu ho’에서 a를 저장하는 메모리 공간은 아래와 같습니다.

0 1 2 3 4
M u   h o

이를 처리하기 위해서는 변수명인 a 뒤에 []기호를 사용합니다. a[n]은 a의 n번째 글자를 처리합니다.(컴퓨터 메모리는 0부터 시작한답니다.) 여기서 a[1]은 u를 뜻합니다.
a[s:e]의 의미는 a문자열의 s번째 글자부터 e-1번째 글자를 포함하는 문자열을 뜻합니다. s이상 e미만이라고 생각하시면 편합니다. a[1:3]은 ‘u ‘를 뜻합니다.
이때, s만 혹은 e만 기술하는 것도 가능합니다. s[1:]인 경우 1번째부터 끝까지 선택하는 것으로 ‘u ho’를 뜻하고, s[:3]인 경우 ‘Mu ‘를 뜻하게 됩니다.
파이썬에서는 문자열 a의 마지막 글자의 위치를 -1로 지정할 수 있습니다. 뒤에서 부터 셀 경우, a[-5, -4, -3, -2, -1]이 되는 것이죠. a[1:-1]인 경우 ‘u h’가 됩니다. 복잡하죠? 직접 문자열을 만들어 해보셔야 합니다.
문자열은 한번 값을 대입하면 수정이 불가능합니다. 이 경우 새로운 문자열을 만들어 해결하거나, 나중에 배울 리스트를 사용해 해결해야 합니다.

문자열을 뒤집는 예시입니다.

# 문자열 슬라이싱 사용
a = 'hello'
a = a[-1::-1]
# [s:e:n] n은 s에서 e로 가는 동안 n만큼 증가(혹은 감수)하겠다는 내용입니다. 기본 값은 1입니다.
print(a)
# 리스트 사용
a = 'hello'
a = list(a) # 문자열을 리스트로
a.reverse() # 리스트 뒤집기
a = ''.join(a) # 리스트를 문자열로
print(a)
# olleh

다음 시간에는 Bool 자료형에 대해 알아보겠습니다.
그럼.. 바위^^