-
[코딩도장] day14. 문자열 응용하기(2/2)IT/파이썬 2020. 8. 28. 01:03
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit24. 문자열 응용하기
- 24.1 문자열 조작하기
- 24.2 문자열 서식 지정자와 포매팅 사용하기
>> 문자열 서식 지정자와 포매팅 사용하기 <<
- 파이썬에서 문자열 만드는 방법
1) 서식 지정자(format specifier)로 문자열 만들기
-> 서식 지정자로 문자열, 숫자(정수), 소수점(실수) 표현 가능
-> 서식 지정자 포맷과 자료형은 % 로 연결
2) 문자열 포맷팅(string formatting)으로 문자열 만들기 : format 메서드
-> 문자열 내에서 특정 부분을 원하는 값으로 바꿀 때 서식 지정자 또는 문자열 포맷팅을 사용
-> ex. xx의 평균 점수는 xx점입니다.
1. 서식 지정자로 문자열 넣기
- 사용법 : '%s' % '문자열'
-> %로 시작하고 자료형을 뜻하는 문자를 작성 (s: string(문자열))
-> '%s' 가 '문자열'로 치환됨. '%s'와 '문자열'은 %로 연결
>>> 'I am %s.' % 'james'
'I am james.'- '문자열'은 변수로 지정 가능
>>> name = 'maria'
>>> name
'maria'
>>> 'I am %s.' % name
'I am maria.'2. 서식 지정자로 숫자 넣기
- 사용법 : '%d' % 숫자
-> d는 숫자를 의미하는 자료형 (10진 정수 decimal integer의 d)
>>> 'I am %d years old.' % 20
'I am 20 years old.'3. 서식 지정자로 소수점 표현하기
- 사용법 : '%f' % 숫자
-> f는 고정 소수점 fixed point의 f
-> %f는 기본적으로 소수점 이하 6자리까지 표시함 (ex. 2.3 => 2.300000)
>>> '%f' % 2.3
'2.300000'- 소수점 이하 자릿수를 지정하고 싶다면 f 앞에 .(점)과 자릿수를 지정
- 사용법 : '%.자릿수f' % 숫자
>>> '%.2f' % 2.3
'2.30'
>>> '%.3f' % 2.3
'2.300'4. 서식 지정자로 문자열 정렬하기
- 사용법 : '%길이s' % 문자열
-> % 뒤에 숫자를 붙이면 "문자열을 지정된 '길이'로 만든 뒤, 오른쪽으로 정렬하고 남는 공간을 공백으로 채움"
>>> '%10s' % 'python'
' python'-> %10s는 1) 문자열의 길이를 10으로 만든 뒤 2) 지정된 문자열을 넣고 오른쪽 정렬
- 문자열 외에 숫자(정수), 소수점(실수) 표현 가능
- 소수점의 경우 .(점) 을 기준으로 자릿수 표현 가능
- 사용법 : '%길이.자릿수f' % 실수
>>> '%10d' % 10
' 10'
>>> '%10f' % 3.5
' 3.500000'
>>> '%10.2f' % 3.5
' 3.50'- 왼쪽 정렬은 길이에 -를 붙혀줌!
- 사용법 : '%-길이s' % 문자열, '%-길이d' % 숫자, '%-길이f' % 실수
>>> '%-10s' % 'python'
'python '
>>> '%-10d' % 1
'1 '
>>> '%-10f' % 3.5
'3.500000 '5. 서식 지정자로 문자열 안에 값 여러 개 넣기
- 서식 지정자는 공백으로 구분하고 값은 괄호 안에 ,(쉼표)로 구분하여 표기
( 공백으로 띄우지 않고 붙히면 실제 결과도 붙어서 나옴 )
- 사용법 : '%d %s' % (숫자, '문자열')
>>> 'Today is %d %s.' % (3, 'April')
'Today is 3 April.'6. format 메서드 사용하기
- 문자열 안에 {}(중괄호) 를 넣고, 그 안에 포맷팅을 지정하고 format 메서드로 값을 지정
- 사용법 : '{인덱스}'.format(값)
>>> 'Hello, {0}'.format('world!')
'Hello, world!'
>>> 'Hello, {0}'.format(100)
'Hello, 100'7. format 메서드로 값을 여러 개 넣기
- 값을 1개만 지정할 때는 인덱스를 0 만 지정하였으나
- 값을 여러 개 넣을때는 0 ~ n 까지 순서를 지정
- 각각의 인덱스는 공백으로 구분하며, 자료형 구분은 상관 없음
(공백으로 구분하지 않고 붙히면, 결과도 붙어서 출력됨)
>>> 'Hello, {0} {1} {2}'.format('Python', 3.6, 'Script')
'Hello, Python 3.6 Script'
>>> 'Hello, {0}{1}{2}'.format('Python', 3.6, 'Script')
'Hello, Python3.6Script'8. format 메서드로 같은 값을 여러 개 넣기
- 같은 인덱스가 지정된 {}를 여러 개 넣으면 같은 값이 여러 개 들어감
>>> '{0} {0} {1} {1}'.format('Python', 'Script')
'Python Python Script Script'9. format 메서드에서 인덱스 생략하기
- {}에서 인덱스 생략하면 format에 지정한 순서대로 값이 들어감
>>> 'Hello, {} {} {}'.format('Python', 'Script', 3.6)
'Hello, Python Script 3.6'- 만일 {}와 format 값의 수가 일치하지 않는 경우
{} 가 많으면 에러
format이 많으면 {} 수 만큼만 출력
>>> 'Hello, {} {}'.format('Python')
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
'Hello, {} {}'.format('Python')
IndexError: tuple index out of range
>>> 'Hello, {}'.format('Python', 'Script')
'Hello, Python'10. format 메서드에서 인덱스 대신 이름 지정하기
- {}에 인덱스 대신 이름 지정 가능
>>> 'Hello, {language} {version}'.format(language='Python', version=3.6)
'Hello, Python 3.6'11. 문자열 포맷팅에 변수를 그대로 사용하기
- 변수에 값이 있고
- {}에 변수 이름을 지정하면 문자열 생성 가능
- 단, 문자열 앞에 포맷팅(formatting)이라는 뜻으로 f를 붙힘
>>> language='Python'
>>> language
'Python'
>>> version=3.6
>>> version
3.6
>>> f'Hello, {language} {version}'
'Hello, Python 3.6'12. format 메서드로 문자열 정렬하기
- 서식 지정자로 오른쪽/왼쪽 정렬, ljust, rjust, center 로 문자 정렬 => 문자열 길이 지정 후, 정렬
- 인덱스 뒤에 :(콜론)을 붙이고 정렬할 방향과 길이 지정
=> 문자열을 지정한 길이로 만든 뒤 왼쪽/오른쪽으로 정렬 후, 남는 공간은 공백으로 채움
- 사용법 :
왼쪽정렬 => '{인덱스:<길이}'.format(값)
오른쪽정렬 => '{인덱스:>길이}'.format(값)
>>> '{0:<10}'.format('python')
'python '
>>> '{0:>10}'.format('python')
' python'=> 인덱스는 여러 개 사용할 수 없나보다...?
13. 숫자 개수 맞추기
- 서식 지정자의 경우 %와 자료형 사이에 0과 개수를 지정하면 자릿수에 맞춰 0으로 채워짐
- 문자열 포맷팅의 경우 인덱스나 이름 뒤에 :(콜론)을 붙히고 0과 개수를 지정
※ 이때 전체 자릿수는 0을 포함함
- 사용법 :
'%0개수d' % 숫자
'{인덱스:0개수d'}.format(숫자)
>>> '%03d' % 1
'001'
>>> '{0:03d}'.format(35)
'035'- 실수도 숫자 개수 맞출 수 있음
- 소수점 이하 자릿수 지정할 시 .(점) 뒤에 자릿수를 지정
※ 이때 전체 자릿수는 0을 포함하여 '정수 부분, 소수점, 소수점 이하 자릿수'가 모두 포함됨
- 사용법 :
'%0개수.자릿수f' % 숫자
'{인덱스:0개수.자릿수f}'.format(숫자)
>>> '%08.2f' % 3.6
'00003.60'
>>> '{0:08.2f}'.format(3.6)
'00003.60'14. 채우기와 정렬을 조합해서 사용하기
- {} 에 인덱스, 채우기, 정렬, 길이, 자릿수, 자료형 순으로 조합하여 사용 가능
- 사용법 : '{인덱스:[[채우기]정렬][길이][.자릿수][자료형]}'
>>> '{0:0<10}'.format(15) # 길이 10, 왼쪽으로 정렬하고 남는 공간은 0으로 채움
'1500000000'
>>> '{0:0>10}'.format(15) # 길이 10, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
'0000000015'- 채우기 부분이 0이 아닌 다른 문자를 넣어도 가능함 (공백, 문자, .. )
(채우기 생략 시 공백이 들어감)
>>> '{0: >10}'.format(15) # 남는 공간을 공백으로 채움
' 15'
>>> '{0:>10}'.format(15) # 채우기 부분을 생략하면 공백이 들어감
' 15'
>>> '{0:x>10}'.format(15) # 남는 공간을 문자 x로 채움
'xxxxxxxx15'
>>> '{0:1>10}'.format(15) # 남는 공간을 숫자 1로 채움
'1111111115'● 요약 ●
1. 파이썬은 메서드만 잘 활용해도 코딩을 쉽게 할 수 있겠구나!
'IT > 파이썬' 카테고리의 다른 글
[코딩도장] day16. 딕셔너리 응용하기(2/2) - items(), keys(), values() (0) 2020.09.01 [코딩도장] day15. 딕셔너리 응용하기(1/2) - setdefault(), update(), pop(), popitem() (0) 2020.08.30 [코딩도장] day13. 문자열 응용하기(1/2) - 문자열 메서드(replace(), split(), join(), strip()) (0) 2020.08.27 [코딩도장] day12. 2차원 리스트 - 반복문으로 리스트 만들기 (0) 2020.08.24 [코딩도장] day11. 2차원 리스트 (0) 2020.08.23