[Python] 문자열(str)
19 Jan 2020
Reading time ~5 minutes
문자열(string)의 생성
문자열 데이터는 복수개의 문자를 순서대로 나열한 것으로 작은 따옴표(' '
) 또는 큰 따옴표(" "
) 사이에 문자를 넣어 생성합니다.
# 따옴표나 큰 따옴표를 사용하여 문자열을 생성한다.
a = 'Hello World'
b = "Python is best"
print(a)
print(b)
# 출력:
Hello World
Python is best
다만, 문자열 자체에 '
나 "
가 있는 경우에는 그 반대의 기호를 양쪽에 사용하여 생성합니다.""" """
를 사용해서도 표현이 가능합니다. 이 때는 여러 행에 걸친 문자열 표현이 가능합니다.
# 문자열에 이미 따옴표나 큰 따옴표가 있는 경우에는 다른 따옴표를 이용해 생성합니다.
a = '"Hello" World'
b = "Hello' World"
print(a)
print(b)
# 출력:
"Hello" World
Hello' World
# 복수의 행으로 문자열을 표현하고 싶을 때는 양쪽 끝에 따옴표나
# 큰 따옴표를 세개 사용합니다.
c = """Hello World.
It's wonderful world"""
d = '''I'm
groot
'''
print(c)
print()
print(d)
# 출력:
Hello World.
It's wonderful world
I'm
groot
이스케이프 문자(escape string)
문자열 내에서 특정한 효과를 주기 위해 사용합니다.
\n
: 문자열 안에서 줄을 바꿀 때 사용
\t
: 문자열 안에서 몇 칸 간격을 벌릴 때 사용
\\
: \ 자체를 문자로 표현할 때 사용
\'
: ‘ 자체를 문자로 표현할 때 사용
\"
: “ 자체를 문자로 표현할 때 사용
# \n 의 활용
print('Hello World')
print('Hello World\n') # 다음 출력값은 한줄 비우고 출력하기
print('Hello World\n\n') # 다음 출력값은 두줄 비우고 출력하기
print('Hello\nWorld') # 문자열 내에서도 한줄을 바꿀 수 있습니다.
# 출력:
Hello World
Hello World
Hello World
Hello
World
# \t 의 활용
print('Data Science is very awesome')
print('Data Science is \tvery awesome') # \t 이후 여러칸 띄우기
# 출력:
Data Science is very awesome
Data Science is very awesome
# \\의 활용
print('ADBSDW\\')
# 출력:
ADBSDW\
# \'의 활용
print('I\'m groot')
# 출력:
I'm groot
# \"의 활용
print("\"Winter\" is comming.")
# 출력:
"Winter" is comming.
문자열의 인덱스
문자열을 구성하는 각 문자는 순서번호가 매겨져 있습니다. 이 번호를 인덱스(index)
라고 합니다.
- 인덱스는 0으로 시작합니다.(1로 시작하지 않습니다.)
a = 'Hello World' # 길이 : 11
print('문자열 내 제일 첫 문자 :', a[0])
print('문자열 내 제일 마지막 문자 :', a[10])
# 출력:
문자열 내 제일 첫 문자 : H
문자열 내 제일 마지막 문자 : d
- -1 인덱스
파이썬은 특이하게 음수 인덱스를 지원합니다.
-1은 가장 마지막 인덱스를, -2는 마지막에서 두 번째 인덱스를 나타냅니다.
a = 'Hello World'
print(a[0]) # 제일 첫 문자
print(a[10]) # 제일 마지막 문자
print(a[-1]) # 제일 마지막 문자
print(a[-11]) # 제일 첫 문자
# 출력:
H
d
d
H
- 인덱스의 범위
- 인덱스의 입력값으로는
0부터 "문자열의 길이 - 1"
까지만 가능합니다. - 음수 인덱스의 경우에는
-1부터 "-문자열의 길이"
까지 가능합니다. - 이 범위를 벗어나면 에러가 발생합니다.
- 인덱스의 입력값으로는
a = "Freedom"
# 아래 코드를 실행하면 인덱스 범위를 벗어나므로 오류가 발생합니다.
print(a[7])
문자열의 슬라이싱
앞에서 사용한 인덱싱은 하나의 문자만을 추출할 수 있습니다. 하지만 슬라이싱을 통해 복수의 문자를 추출할 수 있습니다.
[ 시작인덱스 : 끝인덱스 ]
를 명시하면 시작인덱스부터 끝인덱스 - 1 에 해당하는 문자열 부분을 추출합니다.- 시작인덱스나 끝인덱스가 생략되어 있으면 0부터 혹은 끝까지로 간주하고 추출합니다.
a = 'Hello world'
print(a[0:11])
print(a[0:1])
print(a[:5])
print(a[3:])
print(a[:])
# 출력:
Hello world
H
Hello
lo world
Hello world
문자열에서 사용가능한 함수
(1) upper( ), lower( )
: 대소문자 변환 기능
a = 'hello world'
print(a.upper())
a = 'JAMMANBO'
print(a.lower())
# 출력:
'HELLO WORLD'
'jammanbo'
(2) replace( )
: 문자열 내의 특정 문자를 다른 문자로 치환하는 기능
a = 'hello world'
a.replace('h', 'j') #h를 j로 바꾼다
# 출력:
'jello world'
(3) split( )
: 문자열을 특정한 문자 값으로 구분, 분할하여 리스트로 반환하는 기능
a = 'hello world what a nice weather'
print(a.split('w'))
print(a.split())
# 출력:
['hello ', 'orld ', 'hat a nice ', 'eather']
['hello', 'world', 'what', 'a', 'nice', 'weather']
(4) strip( ), lstrtp( ), rstrip( )
: 각각 문자열의 양쪽 공백, 왼쪽 공백, 오른쪽 공백을 지우는 기능
a = ' Majorca is wonderful place. '
print(a)
print(a.strip()) # 양쪽 문자열 공백 제거
# 출력:
Majorca is wonderful place.
Majorca is wonderful place.
a = ' Majorca is wonderful place.'
print(a)
print(a.lstrip()) # 왼쪽 문자열 공백 제거
# 출력:
Majorca is wonderful place.
Majorca is wonderful place.
a = 'Majorca is wonderful place. '
print(a)
print(a.rstrip()) # 오른쪽 문자열 공백 제거
# 출력:
Majorca is wonderful place.
Majorca is wonderful place.
(5) format( )
: 문자열 내 특정한 값을 변수 값으로 입력할 수 있는 기능
temperature = 25.5
prob = 80
a = '오늘 기온은 {}도, 강수확률은 {}% 입니다.'.format(temperature, prob)
print(a)
# 출력:
오늘 기온은 25.5도, 강수확률은 80% 입니다.
a = '오늘 기온은 {temperature}도, 강수확률은 {prob:.2f}%입니다.'.format(temperature = 20, prob = 80.5)
# 출력:
오늘 기온은 20도, 강수확률은 80.50% 입니다.
# {} 안에 인덱스 숫자를 입력하여 format 함수 안에 어떤 변수가 들어갈지 지정할 수 있습니다.
temperature = 19
prob = 10
a = '오늘의 기온은 {1}도, 강수확률은 {0}%입니다.'.format(prob, temperature)
print(a)
# 출력:
'오늘의 기온은 19도, 강수확률은 10%입니다.'
# 참고 : format 함수와 유사하게 % 를 이용해 특정형식의 값을 문자열에 넣을 수 있습니다.
# %s : string
# %c : character (문자열 1개)
# %d : int
# %f : float
print("I have a %s, I have an %s." % ("pen","apple"))
# 출력 :
I have a pen, I have an apple.
(6) find()
: 문자열이 특정한 값을 가지면 그 인덱스를 반환하는 함수
그 특정한 값이 여러개 이면 가장 앞에 인덱스를 반환합니다.
func = "python is easy programming language"
func.find('p')
# 출력:
0
문자열을 검색하는 시작인덱스와 끝인덱스를 지정하여 특정 구간을 검색할 수 있습니다.
# 인덱스 3~20 구간에서 p가 있는지 검색
func = "python is easy programming language"
func.find('p', 3, 20)
# 출력:
15
(7) count()
: 문자열 내 특정한 값의 수를 반환하는 함수
func = "python is easy programming language"
func.count('p')
# 출력:
2
Reference
- 패스트캠퍼스 파이썬 강의
- 점프투파이썬 (https://wikidocs.net/book/1)