Python/Python 시작하기

6. 파이썬 자료형 - 문자열 포맷팅

arvigoes 2019. 12. 13. 23:57

포맷팅 기초                                                        

문자열에서 가장 중요한 것이라고 생각하는 문자열 포맷팅입니다.

문자열 포맷팅은 문자열 중에 일 부분을 변수로 두어 그 부분만 가변으로 내용을 달리 할 수있도록 하는 기법 입니다.

 

예를 들면

나는 사과를 먹었다.

나는 바나나를 먹었다.

나는 망고를 먹었다.

나는 자두를 먹었다.

여기에서 변수는 과일 명이 되고 나머지는 동일한 포맷( 나는 XX를 먹었다.) 가 됩니다.

# Code 1
# 기본 출력

print("나는 사과를 먹었다.")
print("나는 바나나를 먹었다.")
print("나는 망고를 먹었다.")
print("나는 자두를 먹었다.")

이 내용을 포맷팅 시켜서 작성한다면 아래와 같은 코드가 됩니다.

# Code 2
# 포맷

format_text = "나는 %s를 먹었다."
print(format_text % "사과")
print(format_text % "바나나")
print(format_text % "망고")
print(format_text % "자두")

6-1. 포맷

어떠신가요? 전 괭장히 만족스러운 코드로 보입니다.

어떤 과일이든 이제는 과일이름만 넣으면 되니까요

문자만 넣을 수 있는건 아닙니다. 숫자도 넣을 수 있어요

# Code 3
# 포맷
text = "나는 사과 %d개 먹었다."
print(text % 1)
print(text % 3)
print(text % 5)
print(text % 9)

6-2. 포맷 숫자

한번에 두개 이상도 가능 합니다.

# Code 4
# 포맷
text = "나는 %s %d개 먹었다."
print(text % ("사과", 1))
print(text % ("바나나", 3))
print(text % ("망고", 5))
print(text % ("자두", 9))

6-3. 포맷팅

 

포맷팅 종류                                                       

문자열 포맷팅 예제로 정수와 문자만 사용 했는데  이외에도 다양한 데이터들을 대입할 수 있습니다.

포맷코드 설명
%s 문자열
%c 문자 1개
%d 정수
%f 부동소수
%x 16진수
%o 8진수
%% % 문자 자체

다양하게 사용할 수 있으니 사용해 보도록 합시다.

그런데 뭘 써야 하는지 가끔 햇갈린다 그럴땐 %s 쓰시면 됩니다.

# Code 6
# 포맷
text = "나는 %s %s개 먹었다."
print(text % ("사과", 1))
print(text % ("바나나", 3))
print(text % ("망고", 5.2))
print(text % ("자두", 'c'))

6-4. code 6 결과

이렇게 잘 나오네요.

%s 쓰셔도 되지만 타입 확인등을 위해서는 평소에 맞는 타입의 포맷코드를 사용하시는 것을 좋은 습관이겠죠.

 

포맷코드와 숫자 함께 사용                               

위에서 보았듯이 %d, %s 등의 포맷 코드는 문자열 안에 어떤 값을 삽입하기 위해 사용합니다.

하지만 포맷 코드를 숫자와 함께 사용하면 더 유용하게 사용할 수 있습니다.

# Code 7
# 포맷 정렬
text = "나는 %5s %d개 먹었다."
print(text % ("사과", 1))
print(text % ("바나나", 3))

text2 = "나는 %-5s %d개 먹었다."
print(text2 % ("망고", 5))
print(text2 % ("자두", 3))

text3 = "나는 %s %0.2f개 먹었다."
print(text3 % ("망고", 5.12341234))
print(text3 % ("자두", 3.345232))

6-5. 포맷 정렬

%5s : 전체길이 5개인 공간에 채우고 남는 칸은 공백으로 채움니다. (만약 5자가 넘더라도 출력은 전체 다됩니다. 5자 보다 작을때 공백으로 채워집니다.)  오른쪽 정렬 사용 합니다.

%-5s : 위와 동일한데 왼쪽 정렬 사용 합니다.

%0.2f : 소수점 이하 2자리까지만 표현 합니다.

 

문자열 포맷팅은 너무나 중요하고 좀 더 잘 사용 하려면 더 많은 기반지식이 필요합니다.

현재로는 이정도 까지만으로도 많은 표현이 가능 합니다.

그러나 좀 더 효율적이고 정밀한 컨트롤을 위해서는 추후 기반지식이 더 높아진 후에 다시 한번 더 다루도록 하겠습니다.