티스토리 뷰

Backend-dev/python

파이썬의 문자열 포맷팅

RunningWater 2018. 3. 20. 00:29

문자열 포맷팅이란?

문자열 포맷팅은 변수를 이용하지 않고(사용하셔도 됩니다.), 문자열 내에 값을 삽입하는 것을 말합니다. 몇 가지 단어만 다르고 중복되는 구문 등이 있으면 문자열 포맷팅을 통하여 쉽게 바꿀 수 있습니다.

문자열 포맷팅 예시

누구의 블로그인지를 나타내는 구문을 예제로 들어보겠습니다. 

print('this is %s blog' %"lemoncandy's")
# this is lemoncandy's blog가 출력


대체할 부분에 "%s"라고 적고, 문장이 끝나고 난 뒤에 "%대체할 말"을 적어서 의도한대로 문장을 출력하게 만들었습니다. 문자만 넣을 수 있는 것이 아니라 숫자(정수, 부동소수)도 넣을 수 있습니다.


print("%d명의 방문자도 %d명의 방문자도 소중하다" %(1, 10))
# 1명의 방문자도 10명의 방문자도 소중하다


하나가 아닐 경우 괄호로 묶어주면 됩니다. s는 string을 d는 digit을 뜻합니다. 부동소수는 f로 표현합니다. 포맷팅은 숫자가 함께 사용될 수 있습니다.

 

print("원주율은 %f입니다" %3.141592) 
print("%10s world" %"hello")#     hello world
print("%-10s world" %"hello")#hello     world


포맷팅할 때 숫자가 같이 사용되면 차지하는 칸을 뜻합니다. 2번째 예제에서는 10은 10칸을 차지한다는 뜻이고, 원래 들어가야할 hello라는 단어는 오른쪽 정렬됩니다. 반대로 그 밑의 예시처럼 -가 붙어있으면 오른쪽 정렬됩니다. 소수점 자리를 고정시킬 수도 있습니다.


print("원주율은 %0.2f입니다" %3.141592) #3.14


점 앞에는 s에 사용되었던 것처럼 차지하는 칸을 말하는 것이고, 점 뒤의 숫자는 소수점 자리를 어디까지 표현할 지를 나타내는 것입니다. 0.2이기 때문에 기본적인 형태에서 소수점을 2자리만 출력했습니다. 잊지마세요. %d는 정수, %f는 부동소수, %s는 문자열을 대체합니다. 그리고 숫자와 같이 사용할 수도 있습니다.


%s를 하고 대체할 말을 숫자(괄호 없이)로 써도 에러가 나지 않습니다. %s라고 적으면 포맷팅하는 과정에서 다 문자로 변환시키기 때문입니다. 

새로운 포맷팅 str.format()

위의 형식처럼 해도 에러가 나지 않습니다만 파이썬3에서는 format메소드가 추가되었습니다.

print("this is {} blog".format("lemoncandy's"))
print("{}명의 방문자도 {}의 방문자도 소중하다".format(1, 10))


차이점이 느껴지시나요? 문장안에는 중괄호만 남겨두고 대체할 단어는 format함수에 전달하면 순서에 맞게 대체됩니다. 위의 소스코드를 실행하면 처음에 했던 코드와 동일한 결과가 나옵니다.

str.format() 메소드가 추가되서 좋은 점

format함수 안에 들어가는 것은 튜플 형태입니다. 그래서 인덱스로 접근이 가능하며 대체할 값의 순서를 바꿀 수 있습니다.

print("{1} {0} {2} blog".format("this", "is", "lemoncandy's"))


인덱스는 0부터 시작한 다는 것을 잊지마세요. 순서대로라면 this is lemoncandy's blog가 되어야하지만 is this로 시작합니다. 이처럼 인덱스로 편하게 값을 바꿀 수 있습니다.


print("{1} {0} {owner} blog".format("this", "is", owner="lemoncandy's"))


같은 형태로 이렇게 키워드를 넣을 수도 있습니다. 키워드를 넣을 땐 중괄호 안에도 키워드를 넣어줘야 한다는 것을 기억해주세요.


print("{1:d} {0} {owner} blog".format("this", 12, owner="lemoncandy's"))


첫 번째 중괄호에 1:d가 되어 있는 것이 보이시나요? :d라고 설정하면 정수가 들어가지 않으면 에러를 일으킵니다. :f는 부동소수, :s는 문자열입니다. 이처럼 정해진 타입을 넣지 않으면 에러를 일으켜서 확인할 수도 있습니다. 


print("{0}은 {1:10.2f}입니다.".format("원주율", 3.141592))


마지막 예시에서는 숫자를 붙여봤습니다. 콜론(:) 뒤에 숫자를 붙이면 자리를 조정할 수 있습니다. 혹시 다른 곳에서 소스코드를 보시다가 숫자가 나오더라도 당황하지 마시고 차근차근 생각해보세요.



공감은 제작자에게 큰 힘이 됩니다.


'Backend-dev > python' 카테고리의 다른 글

파이썬의 자료형 list  (0) 2018.03.27
파이썬의 불리언(boolean) 값  (0) 2018.03.27
파이썬 문자열 자료형 알아보기  (3) 2018.03.19
파이썬의 자료형인 숫자형 알아보기  (0) 2018.03.18
파이썬의 변수  (0) 2018.02.06
댓글