관리 메뉴

정리왕

파이썬 문자열4 (문자열 포맷팅1) 본문

6.개발/파이썬 공부하기

파이썬 문자열4 (문자열 포맷팅1)

정리합니다 2020. 11. 29. 11:46
반응형

문자열에서 또 하나 알아야 할 것으로는 문자열 포맷팅(Formatting)이 있다.

이것을 공부하기 전에 다음과 같은 문자열을 출력하는 프로그램을 작성했다고 가정해 보자.

 

"현재 온도는 18도입니다."

 

시간이 지나서 20도가 되면 다음 문장을 출력한다.

 

"현재 온도는 20도입니다."

 

위 두 문자열은 모두 같은데 20이라는 숫자와 18이라는 숫자만 다르다.

이렇게 문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것이 바로 문자열 포맷팅 기법이다.

 

쉽게 말해 문자열 포맷팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.

다음 예를 직접 실행해 보면서 그 사용법을 알아보자.

 

 

 

 

 

1. 문자열 포맷팅 따라하기

1) 숫자 바로 대입

위 예제의 결과를 보면 알겠지만, 위 예제는 문자열 안에 정수 3을 삽입하는 방법을 보여 준다.

문자열 안에서 숫자를 넣고 싶은 자리에 %d문자를 넣어 주고, 삽입할 숫자 3은 가장 뒤에 있는 %문자 다음에 적었다.

여기에서 %d는 문자열 포맷 코드라고 부른다.

 

 

 

 

2) 문자열 바로 대입

문자열 안에 꼭 숫자만 넣으라는 법은 없다.

이번에는 숫자 대신 문자열을 넣어 보자.

위 예제에서 문자열 안에 또 다른 문자열을 넣기 위해 앞에서 사용한 문자열 포맷 코드를 %d가 아닌 %s를 사용했다.

숫자를 넣기 위해서는 %d를 사용해야 하고, 문자열을 넣기 위해서는 %s를 사용해야 한다.

문자열을 대입할 때는 앞에서 배운 것처럼 큰따옴표나 작은따옴표를 반드시 사용해야 한다.

 

 

 

3) 숫자 값을 나타내는 변수로 대입

1번처럼 숫자로 바로 대입하거나 위 예제처럼 숫자 값을 나타내는 변수를 대입하나 결과는 같다.

 

 

 

 

 

4) 2개 이상의 값 넣기

그렇다면 문자열 안에 1개가 아닌 여러 개의 값을 넣고 싶을 땐 어떻게 할까?

위 예문처럼 2개 이상의 값을 넣으려면 마지막 % 다음 괄호 안에 콤마(,)로 구분하여 각각의 값을 넣어주면 된다.

 

 

 

 

5) 문자열 포맷 코드

문자열 포맷팅 예제에서는 대입해 넣는 자료형으로 정수와 문자열을 사용했으나 이 외에도 다양한 것을 대입할 수 있다.

문자열 포맷 코드로는 다음과 같은 것이 있다.

 

 %s 문자열 (String)
 %c 문자1개 (Character)
 %d 정수 (Integer)
 %f 부동 소수 (Floating-point)
 %o 8진수
 %x 16진수
 %% Literal % (문자 '%' 자체)

 

여기에서 재미있는 것은 %s 포맷 코드인데, 이 코드는 어떤 형태의 값이든 변환해 넣을 수 있다.

무슨 말인지 예를 통해 확인해 보자.

3을 문자열 안에 넣을려면 %d를 사용하고, 3.234를 넣을려면 %f를 사용해야 한다.

하지만 %s를 사용하면 이런 것을 생각하지 않아도 된다.

왜냐하면 %s는 자동으로 %뒤에 있는 값을 문자열로 바꾸기 때문이다.

 

 

 

 

 

 

6) 포맷팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다.

위 예문은 결과값으로 당연히 "Error is 98%."가 출력될 것이라고 예상하겠지만,

파이썬은 값이 올바르지 않다는 값 오류(Value Error) 메시지를 보여 준다.

 

이유는 문자열 포맷 코드인 %d와 %가 같은 문자열 안에 존재하는 경우, %를 나타내려면 반드시 %%로 써야 하는 법칙이 있기 때문이다.

이 점은 꼭 기억해야 한다. 하지만 문자열 안에 %d 같은 포매팅 연산자가 없으면 %는 홀로 쓰여도 상관이 없다.

 

따라서 위 예를 제대로 실행하려면 다음과 같이 해야 한다.

 

 

 

 

 

2. 포맷팅 정렬과 공백 만들기, 소수점 표현하기

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

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

다음 예를 보고 따라 해 보자.

 

1) 정렬과 공백

hi가 오른쪽 정렬됨.

앞의 예문에서 %10s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미이다.

 

0 1 2 3 4 5 6 7 8 9
                h i

 

그렇다면 반대쪽인 정렬은 %-10s가 될 것이다. 확인 해 보자.

hi를 왼쪽으로 정렬하고 나머지는 공백으로 채웠음을 볼 수 있다.

0 1 2 3 4 5 6 7 8 9
h i         j a n e

 

 

 

2) 소수점 표현하기

3.42134234를 소수점 네 번째 자리까지만 나타내고 싶은 경우에는 위와 같이 사용한다.

즉 여기서 '.'의 의미는 소수점 포인트를 말하고 그 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말한다.

다음 예를 살펴보자.

 

위 예는 숫자 3.42134234를 소수점 네 번째 자리까지만 표시하고 전체 길이가 10개인 문자열 공간에서 오른쪽으로 정렬하는 예를 보여 준다.

0 1 2 3 4 5 6 7 8 9
        3 . 4 2 1 3

 

반응형
Comments