파이썬 문자열 포매팅은 크게 두가지로 나눌 수 있다.
- % 이용
- format() 이용
1. 서식 지정자 % 이용 방법
서식지정자라고 하는 %s, %d, %f 는 파이썬2에서 사용하던 방식이다.
최근까지도 많이 사용되고 있지만 개인적으로는 format() 함수를 이용하길 권한다.
하지만 예전 소스를 보다보면 많이 볼 수도 있으니 공부해두는 것이 좋겠다.
사용 방법은 % 뒤에 s, d, f 를 붙혀서 사용한다.
- %s : 문자형(String) 서식
- %d : 숫자형(Decimal) 서식
- %f : 소수형(Float) 서식
s_name = 'My name is %s' % '홍길동'
print(s_name)
s_age = 'My age is %d' % 20
print(s_age)
s_score = 'My Score is %f' % 92.5
print(s_score)
s_score = 'My Score is %.2f' % 92.5
print(s_score)
My name is 홍길동
My age is 20
My Score is 92.500000
My Score is 92.50
위 예시를 보면 %f 는 6자리의 소수점 자리수가 표현되는데 자리수를 변경하려면 % 뒤에 .[자리수]로 작성하면 된다.
- %.1f : 1자리
- %.2f : 2자리
- %.nf : n자리
서식지정자는 여러 개의 문자열을 사용할 수도 있다.
print('너와 나의 이름은 %s와 %s입니다.' % ('홍길동', '김길동'))
print('나는 %s이며 나이는 %d세입니다.' % ('홍길동', 20))
너와 나의 이름은 홍길동와 김길동입니다.
나는 홍길동이며 나이는 20세 입니다.
% 뒤에 숫자를 입력하여 공백을 채워넣을 수도 있다.
만일 %10d 라고 쓰면 전체 자리가 10개라는 의미이다. 이 경우 2자리의 숫자가 입력된다면 공백은 8자리가 되겠다.
s_name = 'My name is %10s' % ('홍길동')
print(s_name)
s_age = 'My age is %10d' % 20
print(s_age)
s_score = 'My Score is %10.1f' % 92.5
print(s_score)
My name is 홍길동
My age is 20
My Score is 92.5
2. format() 함수를 사용
format() 함수는 파이썬3 부터 사용가능했으며 서식지정자(%)와 유사한 문법을 사용한다.
포매팅할 문자영역을 {}로 두고 format() 함수를 사용하면 된다.
s_name = 'My name is {}'.format('홍길동')
print(s_name)
s_age = 'My age is {}'.format(20)
print(s_age)
s_score = 'My Score is {}'.format(92.5)
print(s_score)
My name is 홍길동
My age is 20
My Score is 92.5
format() 함수의 파라미터로 여러 개의 문자열을 사용할 수 있으며 {} 에 0, 1, 2 와 같은 인덱스 번호를 줄 수도 있다.
콜론(:) 뒤에 서식지정자 s, d, i, f를 사용할 수 있으며 s는 문자, d, i 는 숫자, f 는 소수형이다.
print('너와 나의 이름은 {}와 {}입니다.'.format('홍길동', '김길동'))
print('나는 {}이며 나이는 {}세입니다.'.format('홍길동', 20))
print('나는 {0}이며 나이는 {1}세입니다.'.format('홍길동', 20))
print('나는 {:s}이며 나이는 {:d}세입니다.'.format('홍길동', 20))
너와 나의 이름은 홍길동와 김길동입니다.
나는 홍길동이며 나이는 20세입니다.
나는 홍길동이며 나이는 20세입니다.
나는 홍길동이며 나이는 20세입니다.
소수 표현은 :.f로 사용하며 . 앞에 자리수를 지정할 수 있다.
- :.2f : 2자리 소수
- :.3f : 3자리 소수
- :.nf : n자리 소수
서식지정자와 : 뒤에 숫자를 입력하여 공백을 처리할 수 있으며, <, > 를 이용하여 문자열 정렬도 가능하다.
- < : 공백을 넣고 좌측정렬
- > : 공백을 넣고 우측정렬
- :.<10s : 전체 10자리 데이터에 남는 영역은 공백으로 처리하고 좌측정렬
- :.>10s : 전체 10자리 데이터에 남는 영역은 공백으로 처리하고 우측정렬
# 좌측정렬 예시
s_name = 'My name is |{:<10s}|'.format('홍길동')
print(s_name)
# 우측정렬 예시
s_name = 'My name is |{:>10s}|'.format('홍길동')
print(s_name)
s_age = 'My age is {:10d}'.format(20)
print(s_age)
s_score = 'My Score is {:10.1f}'.format(92.5)
print(s_score)
My name is |홍길동 |
My name is | 홍길동|
My age is 20
My Score is 92.5
'인공지능(AI) 개발 > Python' 카테고리의 다른 글
파이썬에서 텍스트 파일 읽고 쓰기 (0) | 2020.04.21 |
---|---|
scikit-learn와 statsmodels (0) | 2020.04.13 |
Jupyter Notebook 시작시 브라우저가 자동실행 되지 않을 때 (5) | 2020.04.05 |
윈도우 10에 파이썬 설치하기 (0) | 2018.10.03 |
사이킷런 (scikit-learn) (0) | 2018.10.01 |
댓글