ko ko ko en en en ko ko cs zh ko ko zh ko ko ko ko ko ko ko ko ko ko ko fa cy ko ko cy ko ko ko cy ko ko ko ko ru ko ko ko ru ko ko tr en ko ko ko ko tr sv ko tr en ko tr en ko ko ko ko ko kn en ko ko en ko ko ja en ko ko ko vi ko ko ko ko vi ko ko vi ko ko vi ko ko ko en ko ko hbs_lat ko ko ja ru ko ko ko ja ru ko ko zh ko ko ko ko ko en ko ko ko en ko ko ko ko zh ko ko ko ko ko ko ko ko ko ko ru en ko ko ko ru ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko fr ko ko ko ko fr ko ko ko en en ko en zh en en
파이썬 코딩 도장: 24.2 문자열 서식 지정자와 포매팅 사용하기
◀ 24.1 문자열 조작하기24.3 퀴즈 ▶︎
파이썬은 다양한 방법으로 문자열을 만들 수 있습니다. 그중에서 서식 지정자(format specifier)로 문자열을 만드는 방법과 format 메서드로 문자열을 만드는 문자열 포매팅(string formatting)에 대해 알아보겠습니다.
예를 들어 학생의 이름과 평균 점수를 출력한다고 하죠.
만약 학생이 바뀐다면 이름과 점수 부분도 바뀌겠죠?
두 문자열에서 '의 평균 점수는', '점입니다.'는 같지만 이름과 점수가 다릅니다. 이렇게 문자열 안에서 특정 부분을 원하는 값으로 바꿀 때 서식 지정자 또는 문자열 포매팅을 사용합니다.
24.2.1  서식 지정자로 문자열 넣기
그럼 서식 지정자(format specifier)로 문자열 중간에 다른 문자열을 넣어보겠습니다.
서식 지정자는 %로 시작하고 자료형을 뜻하는 문자가 붙습니다. %s는 문자열이라는 뜻이며 string의 s입니다. 이처럼 문자열 안에 %s를 넣고 그 뒤에 %를 붙인 뒤 'james'를 지정해주면 %s 부분이 'james'로 바뀝니다('I am %s.'과 'james' 사이의 %는 따옴표로 묶지 않고 그대로 입력해야 합니다).
물론 문자열을 바로 지정하지 않고 변수를 지정할 수도 있습니다.
24.2.2  서식 지정자로 숫자 넣기
그럼 문자열 안에 숫자는 어떻게 넣을까요?
숫자는 %d를 넣고 % 뒤에 숫자를 지정하면 됩니다. %d는 10진 정수 decimal integer의 d입니다.
24.2.3  서식 지정자로 소수점 표현하기
숫자 중에 소수점으로 된 실수를 넣어야 할 경우도 있습니다.
실수를 넣을 때는 %f를 사용하며 고정 소수점 fixed point의 f입니다. %f는 기본적으로 소수점 이하 6자리까지 표시하므로 2.3은 2.300000으로 표시됩니다.
소수점 이하 자릿수를 지정하고 싶다면 다음과 같이 f 앞에 .(점)과 자릿수를 지정해주면 됩니다.
24.2.4  서식 지정자로 문자열 정렬하기
이번에는 서식 지정자와 숫자를 조합하여 문자열을 정렬하는 방법을 알아보겠습니다. 다음과 같이 % 뒤에 숫자를 붙이면 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백으로 채웁니다.
%10s는 문자열의 길이를 10으로 만든 뒤 지정된 문자열을 넣고 오른쪽으로 정렬합니다. 따라서 문자열 'python'은 길이가 6이므로 왼쪽 공간을 공백 4칸으로 채웁니다.
▼ 그림 24-4 문자열 오른쪽 정렬
참고 | 자릿수가 다른 숫자 출력하기
문자열 오른쪽 정렬은 자릿수가 다른 숫자를 출력할 때 유용합니다. %d와 %f도 숫자와 조합하여 오른쪽으로 정렬할 수 있습니다.
>>> '%10d' % 150 '       150' >>> '%10d' % 15000 '     15000'
실수는 다음과 같이 .(점) 앞에 정렬할 길이를 지정하고, 점 뒤에 소수점 이하 자릿수를 지정합니다.
>>> '%10.2f' % 2.3 '      2.30' >>> '%10.2f' % 2000.3 '   2000.30'
그럼 왼쪽 정렬은 어떻게 할까요? 왼쪽 정렬은 문자열 길이에 -를 붙여주면 됩니다.
>>> '%-10s' % 'python' 'python    '
%-10s는 문자열의 길이를 10으로 만든 뒤 지정된 문자열을 넣고 왼쪽으로 정렬합니다. 따라서 문자열 'python'은 길이가 6이므로 오른쪽 공간을 공백 4칸으로 채웁니다.
▼ 그림 24-5 문자열 왼쪽 정렬
24.2.5  서식 지정자로 문자열 안에 값 여러 개 넣기
지금까지 문자열 안에 값을 한 개만 넣었는데, 값을 여러 개 넣으려면 어떻게 해야 할까요?
문자열 안에 값을 두 개 이상 넣으려면 %를 붙이고, 괄호 안에 값(변수)을 콤마로 구분해서 넣어주면 됩니다. 특히 값을 괄호로 묶지 않으면 에러가 발생하므로 주의해야 합니다.
'%d %s' % (숫자, '문자열')
>>> 'Today is %d %s.' % (3, 'April') 'Today is 3 April.'
여기서는 서식 지정자가 두 개이므로 값도 두 개 넣었습니다. 이처럼 서식 지정자가 여러 개면 괄호 안의 값(변수) 개수도 서식 지정자 개수와 똑같이 맞춰주어야 합니다.
지금까지 서식 지정자 사이를 공백으로 띄웠습니다. 만약 서식 지정자를 서로 붙이면 결과도 붙어서 나오므로 주의해야 합니다. 다음은 3과 'April'이 붙어서 3April로 나옵니다.
>>> 'Today is %d%s.' % (3, 'April') 'Today is 3April.'
24.2.6  format 메서드 사용하기
파이썬은 문자열을 만들 때 서식 지정자 방식보다 더 간단한 문자열 포매팅(string formatting)을 제공합니다. 문자열 포매팅은 { }(중괄호) 안에 포매팅을 지정하고 format 메서드로 값을 넣습니다.
>>> 'Hello, {0}'.format('world!') 'Hello, world!' >>> 'Hello, {0}'.format(100) 'Hello, 100'
이렇게 문자열 안에 { }를 넣고 인덱스를 지정합니다. 그리고 format에는 { } 부분에 넣을 값을 지정하면 됩니다.
24.2.7  format 메서드로 값을 여러 개 넣기
이번에는 값을 여러 개 넣어보겠습니다. 인덱스의 순서와 format에 지정된 값의 순서를 주목해주세요.
>>> 'Hello, {0} {2} {1}'.format('Python', 'Script', 3.6) 'Hello, Python 3.6 Script'
{ }에 인덱스를 지정한 뒤 format에는 인덱스가 증가하는 순서대로 값을 넣으면 됩니다. 여기서는 {0} {2} {1}처럼 인덱스 순서를 섞었고 format에는 'Python', 'Script', 3.6 순으로 넣었습니다. 따라서 문자열에는 인덱스 숫자에 해당하는 값이 들어가서 'Hello, Python 3.6 Script'가 나옵니다.
▼ 그림 24-6 format과 인덱스
24.2.8  format 메서드로 같은 값을 여러 개 넣기
특히 같은 인덱스가 지정된 { }를 여러 개 넣으면 같은 값이 여러 개 들어갑니다. 다음은 문자열에 'Python'이 두 개, 'Script'가 두 개 들어갑니다.
>>> '{0} {0} {1} {1}'.format('Python', 'Script') 'Python Python Script Script'
24.2.9  format 메서드에서 인덱스 생략하기
만약 { }에서 인덱스를 생략하면 format에 지정한 순서대로 값이 들어갑니다.
>>> 'Hello, {} {} {}'.format('Python', 'Script', 3.6) 'Hello, Python Script 3.6'
24.2.10                format 메서드에서 인덱스 대신 이름 지정하기
{ }에 인덱스로 순서를 지정하려니 조금 헷갈리죠? { }에 인덱스 대신 이름을 지정할 수도 있습니다.
>>> 'Hello, {language} {version}'.format(language='Python', version=3.6) 'Hello, Python 3.6'
{language}와 {version}처럼 { }에 이름을 지정했습니다. format에는 format(language='Python', version=3.6)과 같이 이름에 해당하는 값을 지정해주면 됩니다.
24.2.11                문자열 포매팅에 변수를 그대로 사용하기
파이썬 3.6부터는 문자열을 만드는 더 간단한 방법을 제공합니다. 다음과 같이 변수에 값을 넣고 { }에 변수 이름을 지정하면 됩니다. 이때는 문자열 앞에 포매팅(formatting)이라는 뜻으로 f를 붙입니다.
>>> language = 'Python' >>> version = 3.6 >>> f'Hello, {language} {version}' 'Hello, Python 3.6'
참고 | 중괄호 출력하기
{ } 중괄호 자체를 출력할 때는 {{, }}처럼 중괄호를 두 번 사용하면 됩니다.
>>> '{{ {0} }}'.format('Python') '{ Python }'
24.2.12                format 메서드로 문자열 정렬하기
지금까지 문자열의 서식 지정자나 ljust, rjust, center로 정렬을 했죠? 문자열 포매팅도 문자열을 정렬할 수 있습니다. 다음과 같이 인덱스 뒤에 :(콜론)을 붙이고 정렬할 방향과 길이를 지정해주면 됩니다.
>>> '{0:<10}'.format('python') 'python    '
'{0:<10}'은 부등호 방향이 왼쪽을 가리키고 있죠? 그래서 문자열을 지정된 길이로 만든 뒤 왼쪽으로 정렬하고 남는 공간을 공백으로 채웁니다.
▼ 그림 24-7 format으로 왼쪽 정렬
다음과 같이 >을 넣어서 오른쪽을 가리키도록 만들면 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백으로 채웁니다.
>>> '{0:>10}'.format('python') '    python'
▼ 그림 24-8 format으로 오른쪽 정렬
참고로 인덱스를 사용하지 않는다면 :(콜론)과 정렬 방법만 지정해도 됩니다.
>>> '{:>10}'.format('python') '    python'
24.2.13                숫자 개수 맞추기
그럼 이번에는 정수와 실수 앞에 0을 넣어서 숫자 개수를 맞추는 방법을 알아보겠습니다.
%d는 다음과 같이 %와 d 사이에 0과 숫자 개수를 넣어주면 자릿수에 맞춰서 앞에 0이 들어갑니다. 즉, %03d로 지정하면 1은 '001', 35는 '035'가 됩니다. { }를 사용할 때는 인덱스나 이름 뒤에 :(콜론)를 붙이고 03d처럼 0과 숫자 개수를 지정하면 됩니다.
>>> '%03d' % 1 '001' >>> '{0:03d}'.format(35) '035'
물론 실수도 숫자 개수를 맞출 수 있습니다. 특히 소수점 이하 자릿수를 지정하고 싶으면 %08.2f처럼 .(점) 뒤에 자릿수를 지정해줍니다.
>>> '%08.2f' % 3.6 '00003.60' >>> '{0:08.2f}'.format(150.37) '00150.37'
여기서 주의할 점은 '%08.2f' % 3.6을 출력했을 때 '00003.60'이 나온다는 점입니다. 잘 보면 3 앞에 0이 7개가 아니라 4개만 붙어 있습니다. 실수는 숫자 개수에 정수 부분, 소수점, 소수점 이하 자릿수가 모두 포함됩니다. 따라서 '00003' 5개, '.' 1개, '60' 2개 총 8개입니다.
▼ 그림 24-9 실수는 정수, 소수점, 소수점 이하 자릿수가 모두 포함됨
24.2.14                채우기와 정렬을 조합해서 사용하기
문자열 포매팅은 채우기와 정렬을 조합해서 사용할 수 있습니다. 다음과 같이 { }에 인덱스, 채우기, 정렬, 길이, 자릿수, 자료형 순으로 지정해줍니다.
그럼 길이를 10으로 만든 뒤 왼쪽, 오른쪽으로 정렬하고 남는 공간은 0으로 채워보겠습니다.
>>> '{0:0 >> '{0:0>10}'.format(15)    # 길이 10, 오른쪽으로 정렬하고 남는 공간은 0으로 채움 '0000000015'
물론 실수로 만들고 싶다면 다음과 같이 소수점 자릿수와 실수 자료형 f를 지정해주면 됩니다.
>>> '{0:0>10.2f}'.format(15)    # 길이 10, 오른쪽으로 정렬하고 소수점 자릿수는 2자리 '0000015.00'
특히 채우기 부분에 0이 아닌 다른 문자를 넣어도 됩니다. 공백을 넣어도 되고, 문자를 넣어도 됩니다. 만약 채우기 부분을 생략하면 공백이 들어갑니다.
>>> '{0: >10}'.format(15)    # 남는 공간을 공백으로 채움 '        15' >>> '{0:>10}'.format(15)     # 채우기 부분을 생략하면 공백이 들어감 '        15' >>> '{0:x>10}'.format(15)    # 남는 공간을 문자 x로 채움 'xxxxxxxx15'
문자열 메서드와 서식 지정자, 문자열 포매팅은 분량이 많지만 필요한 부분만 익혀서 사용하면 되고 모두 외우지 않아도 됩니다. 이 부분은 파이썬을 사용하다 보면 자연스럽게 익히게 됩니다.
참고 | 금액에서 천단위로 콤마 넣기
숫자 중에서 금액은 천단위로 ,(콤마)를 넣죠? 파이썬에서는 간단하게 천단위로 콤마를 넣을 수 있습니다.
먼저 format 내장 함수를 사용하는 방법입니다. 다음과 같이 format 함수에 숫자와 ','를 넣어줍니다.
>>> format(1493500, ',') '1,493,500'
format 함수는 서식 지정자와 함께 사용할 수 있습니다. 다음은 콤마를 넣은 숫자를 오른쪽 정렬합니다.
>>> '%20s' % format(1493500, ',')    # 길이 20, 오른쪽으로 정렬 '           1,493,500'
포매팅에서 콤마를 넣으려면 다음과 같이 :(콜론)뒤에 ,(콤마)를 지정하면 됩니다.
만약 정렬을 하고 싶다면 정렬 방향과 길이 뒤에 콤마를 지정해줍니다.
>>> '{0:>20,}'.format(1493500)     # 길이 20, 오른쪽으로 정렬 '           1,493,500' >>> '{0:0>20,}'.format(1493500)    # 길이 20, 오른쪽으로 정렬하고 남는 공간은 0으로 채움 '000000000001,493,500'
◀ 24.1 문자열 조작하기24.3 퀴즈 ▶︎
Unit 1. 소프트웨어 교육과 파이썬
Unit 2. 파이썬 설치하기
Unit 3. Hello, world!로 시작하기
Unit 4. 기본 문법 알아보기
Unit 5. 숫자 계산하기
Unit 6. 변수와 입력 사용하기
Unit 7. 출력 방법 알아보기
Unit 8. 불과 비교, 논리 연산자 알아보기
Unit 9. 문자열 사용하기
Unit 10. 리스트와 튜플 사용하기
Unit 11. 시퀀스 자료형 활용하기
Unit 12. 딕셔너리 사용하기
Unit 13. if 조건문으로 특정 조건일 때 코드 실행하기
Unit 14. else를 사용하여 두 방향으로 분기하기
Unit 15. elif를 사용하여 여러 방향으로 분기하기
Unit 16. for 반복문으로 Hello, world! 100번 출력하기
Unit 17. while 반복문으로 Hello, world! 100번 출력하기
Unit 18. break, continue로 반복문 제어하기
Unit 19. 계단식으로 별 출력하기
Unit 20. FizzBuzz 문제
Unit 21. 터틀 그래픽스로 그림 그리기
Unit 22. 리스트와 튜플 응용하기
Unit 23. 2차원 리스트 사용하기
Unit 24. 문자열 응용하기
24.2 문자열 서식 지정자와 포매팅 사용하기
24.4 연습문제: 파일 경로에서 파일명만 가져오기
24.5 심사문제: 특정 단어 개수 세기
24.6 심사문제: 높은 가격순으로 출력하기
Unit 25. 딕셔너리 응용하기
Unit 26. 세트 사용하기
Unit 27. 파일 사용하기
Unit 28. 회문 판별과 N-gram 만들기
Unit 29. 함수 사용하기
Unit 30. 함수에서 위치 인수와 키워드 인수 사용하기
Unit 31. 함수에서 재귀호출 사용하기
Unit 32. 람다 표현식 사용하기
Unit 33. 클로저 사용하기
Unit 34. 클래스 사용하기
Unit 35. 클래스 속성과 정적, 클래스 메서드 사용하기
Unit 36. 클래스 상속 사용하기
Unit 37. 두 점 사이의 거리 구하기
Unit 38. 예외 처리 사용하기
Unit 39. 이터레이터 사용하기
Unit 40. 제너레이터 사용하기
Unit 41. 코루틴 사용하기
Unit 42. 데코레이터 사용하기
Unit 43. 정규표현식 사용하기
Unit 44. 모듈과 패키지 사용하기
Unit 45. 모듈과 패키지 만들기
Unit 46. 실전예제: 웹의 데이터로 그래프 그리기
C 언어 코딩 도장
- 이 사이트에 실린 모든 내용, 디자인, 이미지, 편집 구성의 저작권은 (주)도서출판 길벗과 지은이에게 있습니다.
- 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.
- 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
- 링크, SNS 공유는 허용합니다.
서울시 마포구 서교동 월드컵로 10길 56 (서울시 마포구 서교동 467-9)
Copyright © 2016-2021 Coding Dojang