본문 바로가기
파이썬/[누구나! 완전 기초 파이썬]

#4 문자열(Strings)

by J-Build 2020. 9. 19.

문자열(Strings)이란? 

파이썬(Python)에서는 큰 따옴표(double quotes) 또는 작은 따옴표(single quotes) 안에 있는 문자들을 문자열이라고 합니다. 다시 말하자면, 파이썬은 문자나 문자열을 저장하기 위해서 따옴표(quotes)를 사용합니다. colab 노트북을 열고 같이 확인해 볼께요.

'hello'	# 작은 따옴표로 선언된 문자열
# hello
"My name is J-Builder"	# 큰 따옴표로 선언된 문자열
# My name is J-Builder

 

만약 따옴표 안의 문자열에 따옴표를 표시하고 싶다면 역슬래시('\')를 같이 사용하면 됩니다. 

"I\'m awesome"
# I'm awesome
"\"Yes, that\'s it\""
# "Yes, that's it"

 

문자열 안에 특수한 문자(\n)를 넣으면 문자열을 여러줄에 걸쳐서 표현할 수 도 있습니다. 

"Hello\n My name is \n J-Builer"
# Hello
# My name is 
# J-Builder

 

여러줄에 걸친 문자열은 따옴표 세개를 사용해서도 만들 수 있습니다. 

"""This 
is 
good"""
# This 
# is 
# good

 

파이썬 문자의 재미있는 점은, 문자열을 더하기(+)와 곱하기(*) 연산자와 함께 사용할 수 있다는 것이죠. 문자열들을 더하면 문자열을 합쳐주게 되며, 곱하기는 문자열을 곱한 숫자만큼 반복시켜줍니다. 

'Hi' + 'J-Builder'
# Hi J-Builder
3 * 'Hi' + J-Builder
# HiHiHi J-Builder

 

문자열 변수(Variables)

문자열 역시 변수에 할당 할 수 있습니다. 변수에 숫자(Numbers)를 할당 했던것과 동일하게 할당된 변수는 반복적으로 사용이 가능합니다. 

a = 'My name is'
b = 'J-Builder'
c = a + b
print(c)
# My name is J-Builder

 

문자열 다루기

그럼 이번에는 문자열의 특정 문자들을 가져오는 방법을 알아보겠습니다. 방법은 대괄호([])를 사용하고 대괄호 안에 문자들의 인덱스를 넣어주면 됩니다. 조금 말이 복잡한데, 일단 문자열과 각각 문자들의 인덱스를 알아볼께요. 아래와 같이 7개의 문자로 이뤄진 'Awesome'은 0에서 6까지의 인덱스를 가지고 있습니다. 주의할 점은 처음 인덱스가 0이라는 것이죠. 

+---+---+---+---+---+---+---+
| A | w | e | s | o | m | e |
+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |

 

따라서 첫번째 문자인 'A'를 가져오기 위해선, 아래와 같이 'Awesome' 문자열을 변수 a에 할당하고 a[0]로 첫번째 문자를 가져오는 것입니다. 

a = 'Awesome'
a[0]
# A

 

문자열의 마지막 문자를 가져오기 위해선 문자열의 길이가 얼마인지 알아낼 방법이 필요합니다. 가장 간단한 방법은 내장함수(Built-in function) 인 len()을 통해서 가능합니다. len() 함수는 아래와 같이 문자 갯수가 4개인 문자열을 입력으로 받으면 그 길이인 4를 반환하죠.

a = 'abcd'
len(a)
# 4

 

그럼 'Awesome' 문자열의 마지막 문자를 가져오는 방법은 어떨까요? 네, 맞습니다. 위에서 사용한 len()함수로 문자열의 길이를 가져오고 인덱스를 맞춰주기 위해서 1을 빼준 인덱스를 사용하면 됩니다. 

a = 'Awesome'
b = len(a)	# b는 7의 값을 가지게 됩니다. 
a[b - 1]	# 마지막 인덱스는 6이었습니다. 즉, 문자열길이 7에서 1을 빼준값과 같은것이죠. 
# e

 

파이썬은 인덱스를 역순으로 참조할 수 있는 재미있는 방법을 제공합니다. 아래 예제를 먼저 볼께요. 

a = 'Awesome'
print(a[-1])
# 'e'
print(a[-2])
# m
print(a[-7])
# A

 

위에서 보는것과 같이 인덱스를 '-1'을 주면 가장 뒤에서 첫번째 값을 가져올 수 있습니다. '-2'는 가장 뒤에서 두번째 값이 되겠죠. 이 방법을 사용하면 굳이 문자열의 길이를 몰라도 가장 문자열의 마지막 문자를 가져올 수 있는 아주 편리한 방법입니다. 즉, 아래와 같이 인덱스를 표현할 수 있습니다. 

+---+---+---+---+---+---+---+
| A | w | e | s | o | m | e |
+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|-7 |-6 |-5 |-4 |-3 |-2 |-1 |

 

이제 문자열의 문자를 하나씩 가져오는게 아닌 부분 문자열(substring)을 가져오는 방법을 알아볼께요.

부분 문자열은 인덱스 슬라이싱(slice 또는 slicing) 방법을 통해서 가능합니다. 말 그대로, 인덱스를 기준으로 문자열을 잘라내는 방법입니다. 대괄호([])안에 [시작 인텍스 : 끝 나는 인덱스]를 넣어서 문자열의 시작과 끝 부분을 잘래냅니다. 주의할 점은 '끝 인덱스'는 잘라낼 때 포함하지 않는다는 점 입니다. 아래 예제에서 확인해 볼께요. 

a = 'Awesome'
a[0:2]	# 인덱스 0에서 인덱스 2 이전까지를 잘라냅니다.
# Aw

 

물론 역순 인덱스를 사용해서 부분 문자열을 가져올 수도 있죠. 

a = 'Awesome'
a[0:-1]	# 인덱스 0에서부터 인덱스 -1 이전까지의 문자열을 잘라냅니다.
# Awesom

 

문자열 메소드(Method)

파이썬의 문자열은 문자열 처리를 위해서 여러가지 유용한 기본 함수들을 가지고 있습니다.(함수는 아직 배우지 않았습니다. 지금 여기선, "문자열을 자동으로 처리해 줄 수 있는 미리 정의된 코드들이 제공된다"라고 이해합시다.) 예를 들어서, strip() 함수는 문자열 앞뒤의 공백을 제거해주고, lower() 함수는 대문자를 모두 소문자로 바꿔줍니다. 제공되는 모든 메소드는 여기서 확인해 보세요. 

a = "   My name is J  "	# a는 앞뒤에 공백 문자를 가진 문자열입니다. 
a.strip()	# 문자열은 strip() 함수를 통해서 앞뒤 공백이 있다면 제거할 수 있습니다. 
# My name is J
a = "My name is J"
a.lower()	# lower() 함수는 문자열을 모두 소문자로 바꿔줍니다. 
# my name is j
a = "Hi, J"
s.split(',')	# 문자열을 콤마(',')기준으로 잘라서 리스트(list) 타입으로 반환합니다. 
# ['Hi', 'J']

 

위 마지막 예제의 split() 함수는 그 반환값이 리스트 형태입니다. 리스트는 다음 포스팅에서 설명 드리겠습니다. 

 

문자열 출력

문자열은 화면에 출력할 일이 굉장히 많습니다. 예를 들어서 아래처럼 나이를 출력할 수 있습니다. 

age = 10
t = 'My name is J. And I am '
print(t + age)
# My name is J. And I am 10

age = 20
print(t + age)
# My name is J. And I am 20

 

또한 다음과 같이 format()함수를 사용해도 됩니다. 문자열 안에 중괄호가 들어있다면 format함수는 그 괄호를 입력된 값으로 바꿔서 출력을 합니다. 

age = 10
t = 'My name is J. And I am {}'
print(t.format(age))
# My name is J. And I am 10

age = 20
print(t.format(age))
# My name is J. And I am 20

 

format() 함수를 사용하면 좀 더 쉽게 문자열을 표현할 수 있습니다. 아래 예제에선 문자열 안에 두개의 중괄호를 넣어서 이름과 나이를 표현했습니다. 

t = 'My name is {}. And I am {}'

age = 10
name = 'J'
print(t.format(name, age))
# My name is J. And I am 10

age = 20
name = 'Awesome'
print(t.format(name, age))
# My name is Awesome. And I am 20

 

더 읽어 볼만한 글

인덱스 슬라이싱에 대해서 더 깊이 공부하고 싶으시면 다음 포스팅을 참고하세요. 

2020/09/08 - [파이썬] - 파이썬(Python) 슬라이싱(slice) 이해하기

'파이썬 > [누구나! 완전 기초 파이썬]' 카테고리의 다른 글

#6 조건문 (if ~ else ~)  (0) 2020.09.23
#5 리스트(Lists)  (0) 2020.09.21
#3 숫자(Numbers)  (0) 2020.09.18
#2 변수(Variables)  (0) 2020.09.17
#1 개발환경 설정  (0) 2020.09.16

댓글