취준일기

파이썬 자료형(문자열) 문자열 포맷 코드, format 함수

둉영 2020. 3. 30. 15:25

파이썬 문자열(String) 자료형

 

파이썬 자료형 중 문자열(String) 자료형이란 문자, 단어 등으로 구성된 문자들의 집합을 의미합니다, 

큰 따옴표("")나 작은 따옴표(")로 만들어서 사용할 수 있습니다.

 

파이썬 문제를 풀다 아래와 같은 오류가 발생하여 해결해 보고자 합니다. 

 

 

5번 행인 words[7] = '&' 문장에서 오류가 난 것을 확인 할 수 있습니다. 공백을 '&'로 바꿔쓰기 위해서 사용한 듯 한데 오류가 발생했습니다.  오류를 읽어보면 문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문에 발생한 것을 알 수 있습니다. 문자열 자료형은 그 요솟값을 변경할 수 없는 immutable(불변의) 자료형이라 불립니다.

 

이를 해결하기 위해서는 슬라이싱 기법을 사용할 수 있습니다. 슬라이싱 기법을 통해 공백 기준으로 앞 뒤를 나눈 뒤 가운데에 '&' 문자를 추가하여 새로운 문자열을 만들어 줍니다.

 


  
>>> words = 'Connect Foundation'
>>> words[:7] #문자열 슬라이싱 words[0]~words[6]까지 뽑아내기
'Connect'
>>> words[8:] #words[8]부터 끝 번호까지 뽑아내기
'Foundation'
>>> words[:7] + '&' + words[8:]
'Connect&Foundation'

 

 

아래는 오류를 해결하고 출력한 모습입니다. 

 

혹은 아래에서 배울 문자열 포매팅을 통해 문자열 안의 특정한 값을 바꿔줄 수 도 있습니다. 

 

문자열 포맷 코드

 

%s 포맷 코드는 자동으로 % 뒤에 있는 값을 문자열로 바꿔주기 때문에 어떤 형태의 값이든 변환해 넣을 수 있습니다. 

 


  
>>> "I am %s" % "Judy"
'I am Judy'
>>> 'I ate %d apples' % 3
'I ate 3 apples'
>>> number = 5
>>> 'I read %d books' % number
'I read 5 books'
>>> home = "문과생 주디의 데이터 연구실"
>>> year = 2020
>>> '여기는 %s 입니다. 올해는 %d 년 입니다' % (home, year)
'여기는 문과생 주디의 데이터 연구실 입니다. 올해는 2020 년 입니다'

 

format 함수를 사용한 포매팅


  
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
>>> age = 8
>>> "My cat is {0} years old".format(age)
'My cat is 8 years old'
>>> "올해는 {0}년 입니다. 모두들 {1} 하세요.".format(2020,'행복')
'올해는 2020년 입니다. 모두들 행복 하세요.'

2개 이상의 값을 넣을 경우에는 {0}, {1} 인덱스 항목을 format 함수의 입력값으로 순서에 맞게 바꾸어 줄 수 있습니다. {0}을 format 함수의 첫번째 입력값인 2020으로 바꾸고 {1}은 format 함수의 두번째 입력값인 '행복'으로 바꾸어줍니다. 

 


  
>>>"올해는 {year}년 입니다. 모두들 {word} 하세요.".format(year = 2020, word = "행복")
'올해는 2020년 입니다. 모두들 행복 하세요.'

 

인덱스 항목 대신 {name} 형태로 사용 할 수 도 있습니다. 

 

 

f 문자열 포매팅

파이썬 3.6 버전 미만에서는 사용할 수 없는 기능으로 파이썬 3.6부터 사용가능 한 f 문자열 포매팅 기능에 대해 알아보겠습니다.

문자열 앞에 f 를 붙이면 f 문자열 포매팅 기능을 사용할 수 있습니다. f 문자열 포매팅은 문자열 안에서 변수와 +,- 와 같은 수식을 함께 사용하는 표현식을 지원합니다. 


  
>>> age = 30
>>> f'나는 {age+1}살 입니다.'
'나는 31살 입니다'
#딕셔너리에서 f 문자열 포매팅 사용
>>> d = {'name' : '문과생 주디', 'year': '1'}
>>> f"안녕하세요 {d['name']}입니다. 나이는 {d['year']}입니다."
'안녕하세요 문과생 주디입니다. 나이는 1입니다.'