• Home
  • About
    • SevillaBK's Blog photo

      SevillaBK's Blog

      Data Science Blog

    • Learn More
    • Github
  • Posts
    • All Posts
    • Python
    • ML & DL
    • All Tags

[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)


PythonString Share Tweet +1