Responsive Advertisement
{getContent} $results={6} $label={recent} $type={grid}

파이썬 프로그래밍 - 서식 문자와 문자열 포매팅

 파이썬에서 데이터를 출력할 때 효율적이고 가독성 높은 코드를 작성하는 것이 좋습니다. 이번 글에서는 서식 문자와 format함수를 이용한 출력문에 대해 알아볼게요.

썸네일

서식 문자를 활용한 출력문

서식 문자를 활용할 때의 장점

print문을 작성할 때 서식 문자를 사용하면 변수를 문자열 안에 깔끔하게 포함시킬 수 있습니다. 먼저, 기존의 방식으로 다음과 같은 코드를 작성해 볼게요.

pencil = 500
note = 1000
print('나는', pencil, '원인 연필을 두 개 사고, ', note, '원인 노트를 한 권 샀다.')


출력 결과는 아래와 같습니다.

나는 500원인 연필을 두 개 사고, 1000원인 노트를 한 권 샀다.


위 코드처럼 변수를 문자열과 섞어 출력할 수 있지만, 여러 변수가 있으면 print문을 작성하는 것이 복잡해요. 이럴 때 서식 문자를 활용하면 코드를 더욱 간결하게 작성할 수 있습니다. 다음과 같이 작성해 보세요.

pencil = 500
note = 1000
print('나는 %d원인 연필을 두 개 사고, %d원인 노트를 한 권 샀다.' % (pencil, note))


출력 결과를 살펴보면 처음 작성한 코드와 동일한 결과를 얻을 수 있어요. 

나는 500원인 연필을 두 개 사고, 1000원인 노트를 한 권 샀다.


서식 문자를 사용하는 방식이 조금 낯설지도 모르지만, print문을 작성하는 과정에서 변수를 별도로 관리하기 때문에 명령어의 의도를 명확히 알 수 있습니다.


서식 문자의 종류

print문의 중간에 쓰이는 %d와 같은 키워드를 서식 문자라고 합니다. 특정 서식을 나타내기 위해 작성하는 문자라는 의미가 되겠지요. 여러 가지 종류가 있지만, 다음과 같은 세 가지 서식 문자를 주로 사용합니다.

  • %d: 정수형, 영어로 decimal은 십진수를 의미하는데요, 일반적인 정수형 자료의 서식 문자입니다.
  • %f: 실수형, floating-point, 부동 소수점의 f입니다. 소수점 이하의 숫자를 포함한 실수형 자료의 서식 문자입니다.
  • %s: 문자열형, 문자열을 의미하는 string의 s입니다. 문자열 자료를 표현하는 서식 문자입니다.

다음과 같은 코드로 각 서식 문자의 출력을 확인해 볼게요.

print('%d %f %s' % (3.14, 3.14, 3.14))

출력 결과는 아래와 같습니다.

3 3.140000 3.14

각 서식 문자의 형태와 같이, %d 자리의 출력 결과는 소수점 이하가 탈락하면서 3을 출력합니다. %f의 자리에서는 실수형 자료로 소수점 이하, 표현 가능한 자리까지 나타냅니다. %s 자리에서는 문자열의 형태로 입력한 그대로 3.14가 출력됩니다. 

만약에 3.140000 같이 나오는 소수점 이하의 자릿수가 너무 많아 조절하고 싶다면, %.?f와 같은 형태로 작성합니다. 물음표 자리에는 자릿수를 작성해 줍니다.

print('%.2f' % 3.14159)  # 소수점 이하 2자리만 출력

출력 결과는 아래와 같습니다.

3.14

format 함수

이번에는 format 함수에 대해 살펴보겠습니다. format 함수는 서식 문자의 활용과 비슷한 기능을 하지만, 자료형의 구분이 필요없다는 장점이 있어요. 대신, 인덱스를 활용한다는 것에 유념하여 사용해야 합니다. 먼저, format 함수의 기본 문법은 다음과 같습니다.

print('{} {} {}'.format(값1, 값2, 값3))

예제를 통해 자세히 살펴볼게요. 다음과 같은 코드를 작성해 보겠습니다.

date = 23
day = '화요일'

# 서식 문자 활용
print('오늘은 %d일, %s이다.' % (date, day))

# format 함수 활용
print('오늘은 {}일, {}이다.'.format(date, day))

출력 결과는 아래와 같아요. 

오늘은 23일, 화요일이다.

중괄호의 순서와 같이 format 함수의 매개변수가 대응됩니다. 만약에 매개변수를 여러 번 사용하거나 할 때는 인덱스 번호를 활용하면 되는데요. 다음의 코드를 통해 이해해보면 좋을 것 같습니다.

print('오늘은 {1}일, {0}이다.'.format(day, date))

출력 결과는 아래와 같습니다.

오늘은 화요일, 23일이다.

인덱스의 번호에 따라 매개변수가 대응되기 때문에 인덱스 번호와 매개 변수를 잘 대응시켜 주기만 하면 됩니다.

f-sting 활용하기

파이썬 3.6 이상에서는 f-string(formatted string)이 도입되어 더 간결하고 직관적인 서식 활용이 가능해졌습니다. 먼저 f-string의 기본적인 문법은 다음과 같습니다.

print(f'{값1} {값2} {값3}')

아까의 예제를 다음과 같이 작성해 볼게요.

date = 23
day = '화요일'
print(f'오늘은 {date}일, {day}이다.')

출력 결과는 다음과 같습니다.

오늘은 23일, 화요일이다.

f-string의 장점은 변수를 중괄호 안에 직접 삽입하여 직관적으로 표현이 가능하기 때문에 코드 가독성이 향상된다는 것이에요. 또한 다양한 표현식을 사용할 수 있어요. 

value = 3.14159
print(f'파이 값은 {value:.2f}입니다.')  # 소수점 이하 2자리로 출력


출력 결과는 다음과 같습니다.

파이 값은 3.14입니다.


마치며

파이썬에서의 출력하는 방식은 가장 기초적이지만, 또 어떻게 활용하느냐에 따라 효과적인지 효율적인지, 가독성이 높은지가 달라집니다. 상황에 맞는 다양한 도구를 선택할 수 있도록 다양한 방식의 출력문을 사용해보고 내 것으로 만드는 것이 중요합니다.

{getContent} $results={5} $label={recent} $type={block}