-
TIL. 16 문자열 서식 지정자 및 포매팅 사용하기TIL 2020. 10. 24. 20:55728x90반응형
## 문자열 안에서 특정부분을 원하는 값으로 바꿀때 서식 지정자 또는 문자열 포매팅을 사용한다
## 서식 지정자로 문자열 넣기
## %s % '문자열' 구조
## %s 는 문자열 이라는 뜻으로 string의 s 이다.
## 당연히 문자열로 바로 지정하지 않고 변수로 지정할 수도 있다.
print('I am %s' % 'muntari')
:: I am muntari
name = 'sheemun'
print('I am %s' % name)
:: I am sheemun
## 서식 지정자로 숫자 넣기
## %d % 숫자 구조
## %d 는 숫자 라는 뜻으로 10진 정수 decimal integer 의 d 이다.
## 당연히 숫자를 바로 지정하지 않고 변수로 지정할 수도 있다.
print('I am %d years old' % 29)
:: I am 29 years old
age = 29
print('I am %d years old' % age)
:: I am 29 years old
## 서식 지정자로 소수점 표현하기
## %f % 숫자 구조
## %f 는 실수 라는 뜻으로 fixed point 의 f 이다.
## 기본 소수점 아래 6자리로 디폴트가 되어있으며 %.2f , %.4f 로 소수점 자리를 제한할 수 있다.
print('현재 기온은 %f도 입니다' % 19.2)
:: 현재 기온은 19.200000도 입니다
print('현재 기온은 %.1f도 입니다' % 19.2)
:: 현재 기온은 19.2도 입니다
tem = 19.8
print('현재 기온은 %.2f도 입니다.' % tem)
:: 현재 기온은 19.80도 입니다.
## 서식 지정자를 사용해서 문자열 정렬하기
## %길이s % '문자열'
## %길이s // %-길이s
## %뒤에 숫자를 붙이면 해당 숫자 만큼의 길이로 된 문자열을 만든 후 정렬하고자하는 문자열을 정렬하고 나머지는 공백 으로 채움
## 디폴트 값 오른쪽 정렬로 - 를 붙혀줄 경우 왼쪽 정렬되며 나머지를 공백 으로 채운다.
print('%10s' % 'python')
::: ' python'
## %10s 를 '' "" 등으로 감싸줘야함
print('%-10s' % 'python')
:: 'python '
## 서식 지정자를 사용해 문자열 안에 값 여러개 넣기
## 문자열 안에 값 여러개를 넣기 위해선 %s % '문자열' 구조에서 '문자열'에 괄호 와 함께 ,(콤마)를 사용해줘야한다.
print('Today is %d %s' % (3, 'April'))
:: Today is 3 April
print('Today is %d%s' % (3, 'April'))
:: Today is 3April
## %d 와 %s 사이에 공백을 넣어주지 않으면 그대로 출력되기 때문에 주의하자
## 문자열 포매팅 사용하기
## 문자열 안에서 특정부분을 원하는 값으로 바꿀때 서식 지정자 또는 문자열 포매팅을 사용한다!
## Python에서는 서식 지정자보다 더 편리한 문자열 포매팅 (string formatting)을 제공한다.
## format method
## {인덱스}.format(값) 구조
print('hellow {0}'.format('world!'))
:: 'hellow world!'
print('hellow {0}'.format(20000))
:: 'hellow 20000'
## 값 여러개 넣기
## 인덱스 순서 주의!
print('hellow {0} {2} {1}'.format('python', 'script', 3.8))
:: 'hellow python 3.8 script'
print('hellow {} {} {}'.format('python', 'script', 3.8))
:: 'hellow python script 3.8'
## 인덱스 값을 지정하지 않고 공백으로 기입하는 경우 지정한 값이 순서대로 들어가게 된다.
## 같은 값을 여러번 넣기도 가능
print('{0} {0} {1} {1}'.format('배고파', '배곺'))
:: 배고파배고파배곺배곺
:: 배고파 배고파 배곺 배곺
## {} 사이에 공백을 적어주지 않는 한 그대로 출력됨을 주의하자.
## method 사용시 인덱스가 아닌 이름을 지정할 수 있다.
print('hellow {lan} {ver}'.format(lan = 'python', ver = 3.8))
:: hellow python 3.8
## 당연히 이름이 아닌 변수를 사용할수도 있다
## 변수를 사용할 경우 문자열 앞에 formatting 이라는 뜻의 f를 붙혀줘야 정상 동작한다.
## f'문자열 {} {}'
lan = 'python'
ver = 3.8
print('hellow {lan} {ver}')
:: hellow {lan} {ver}
print(f'hellow {lan} {ver}')
:: hellow python 3.8
## format method 를 이용해 문자열 정렬하기
## '{인덱스 : < 길이}'.format(값) 구조
## 인덱스 뒤에 :(콜론)을 붙이고 길이를 지정해주면 길이 만큼의 문자열이 생성되고 나머지는 공백 으로 채움
## 부등호 < (왼쪽부터 채운다는 의미로 왼쪽 정렬) // > (오른쪽부터 채운다는 의미로 오른쪽 정렬)
print('{0:<10}'.format('python'))
:: 'python '
### 여기서 {0 : < 10} 가독성을 좋게하기 위해 띄어쓰기를 할 경우 error이다, 질문하도록 하자
print('{0:>10}'.format('python'))
:: ' python'
print('{:<10}'.format('python'))
: 'python '
## 인덱스를 지정하지 않고 정렬방향만 정해줄수도 있다!!
## format method 를 이용한 숫자 개수 맞추기
## 숫자 갯수 맞추기 (정수)
## '%0개수d' % 숫자 구조 1
## '{인덱스:0개수d}'.format(숫자) 구조 2
print('%03d' % 1)
:: 001
## %03d 에서 0을 다른 숫자나 문자로 바꾸면 정상 동작하지 않는다.
## %03d 에서 개수 == 3 은 자리수를 나타내는것으로 000 세자리를 만든 후 d 자리의 숫자 1을 오른쪽에서 부터 채운다!
## 디폴트 오른쪽
print('{0:03d}'.format(1))
:: 001
## 숫자 갯수 맞추기 (실수)
## '%0개수.자리수f' % 실수
## {인덱스:0개수.자리수f}.format(실수)
## 소수점(.)도 공간(?)을 하나 차지한다는것을 주의하자
print('%08.2f' % 3.6)
:: 00003.60
## 총 8자리 만큼의 공간(?)을 만든다
## 0 1 2 3 4 5 6 7 의 공간이 있다고 가정하다
## .2 로 소수점 2짜리까지 출력하는 것으로 하였으므로 5번 인덱스 자리에 소수점(.)을 위치시키고 양옆에 3.6을 위치시킨다.
## 0 1 2 3 (3 . 6 0) <-- 이렇게 오른쪽에서 부터 실수를 채운 후 나머지 공간을
0 으로 채움 (0자리를 지울경우 공백으로 채움)
## 디폴트 오른쪽
print('{0:08.2f}'.format(150.37))
:: 00150.37
## 총 8자리 만큼의 공간(?)을 만든다
## 0 1 2 3 4 5 6 7 의 공간이 있다고 가정하다
## .2 로 소수점 2짜리까지 출력하는 것으로 하였으므로 5번 인덱스 자리에 소수점(.)을 위치시키고 양옆에 150.37을 위치시킨다.
## 0 1 (1 5 0 . 3 7) <-- 이렇게 오른쪽에서 부터 실수를 채운 후 나머지 공간을 공백 으로 채움
## 디폴트 오른쪽
## format method에서 채우기와 정렬 조합해서 사용하기
## '{인덱스:채우기 정렬 길이 .자리수 자료형}'.format(값) 구조
print('{0:0<10}'.format(15))
:: 1500000000
print('{0:x<10}'.format(15))
:: 15xxxxxxxx
## 인덱스 : 0 , 채우기 : 0 (다른문자 가능), 정렬 : < or > , 길이 : 10
print('{0:0<10.3f}'.format(15.11))
:: 15.1100000
## 인덱스 : 0 , 채우기 : 0 (다른문자 가능), 정렬 : < or > , 길이 : 10, 자리수 : .3 (소수3째자리까지), 자료형: f(실수)
print('{0: <10}'.format(15))
:: '15 '
print('{0:<10}'.format(15))
:: '15 '
## 채우기 자리에 공백 또는 아무것도 넣지 않을 경우 공백 으로 채움!
출처 : dojang.io/
코딩 도장
dojang.io
728x90반응형'TIL' 카테고리의 다른 글
TIL. 18 Dictionary 조작하기 (0) 2020.10.26 TIL. 17 python 과제 (목차확인) (0) 2020.10.25 TIL. 15 again python_문자열 메서드 (0) 2020.10.23 TIL.14 Javascript_카드 맞추기 게임 (0) 2020.10.22 TIL.13 Javascript_초급_3 (0) 2020.10.21