티스토리 뷰
#3 파이썬 chapter 3. 문자열 포매팅
문자열에서 또 하나 알아야 할 것으로는 문자열 포매팅(Formatting)이 있다. 이 내용을 공부하기 전에 다음과 같은 문자열을 출력하는 프로그램을 작성했다고 가정하자.
' 현재 온도는 18도 입니다.'
시간이 지나서 20도가 되면 다음 문장을 출력한다.
'현재 온도는 20도 입니다.'
위 두 문자열은 모두 같은데 20이라는 숫자와 18이라는 숫자만 다르다. 이렇게 문자열 안의 특정한 값을 바꿔야할 경우가 있는데 이것을 가능하게 해주는 것이 바로 문자열 포매팅 기법이다.
-문자열 포매팅 따라하기
1. 숫자 바로 대입
>>> "I eat %d apples." %3
'I eat 3 apples.'
위와 같이 문자열 안에 정수 3을 삽입하는 방법을 보여준다.
문자열 안에서 숫자를 넣고 싶은자리에 %d 라는 문자를 넣어주고, 삽입할 숫자 3은 가장 뒤에 % 문자 다음에 써 넣었다.
여기에서 %d는 문자열 포맷코드라고 부른다.
2. 문자열 바로 대입
문자열 안에 꼭 숫자만 넣으라는 법은 없다. 이번에는 문자열을 넣어보자
>>> "I eat %s apples." %five
'I eat five apples.'
눈치가 빠르신 분들이라면 벌써 유추하였을 것이다. 숫자를 넣기위해선 %d 를 써야하고, 문자열을 넣기 위해선 %s 를 넣어야한다는 사실을 말이다.
3. 숫자값을 나타내는 변수로 대입
>>> number=3
"I eat %d apples." %number
'I eat 3 apples.'
4. 2개 이상의 값 넣기
그렇다면 문자열 안에 1개가 아닌 여러개의 값을 넣고 싶을 땐 어떻게 해야할까?
>>> number=10
>>> day="three"
>>> "I ate %d apples. so I was sick for %s days." % (number,day)
'I ate 10 apples. so I was sick for three days.'
위 예문처럼 2개 이상의 값을 넣으려면 마지막 % 괄호안에 콤마(,)로 구분하여 각각의 값을 넣어주면 된다.
5. 문자열 포맷 코드
문자열 포매팅에는 정수와 문자열을 사용했으나 이 외에도 다양한 것을 대입할 수 있다.
%s 문자열
%c 문자 1개
%d 정수
%f 부동 소수
%o 8진수
%x 16진수
%% Literal % (문자 '%' 자체)
여기서 재미있는 것은 %s 포맷 코드인데 이 코드는 어떤 형태의 값이든 변환해 넣을 수 있다는 장점이 있다.
>>> "I have %s apples" %3
'I have 3 apples'
>>> "rate is %s" %3.234
'rate is 3.234
%s는 자동으로 % 뒤에 있는 값을 문자열로 바꾸어준다.
6. 포맷 코드와 숫자 함께 사용하기
위에서 보았듯이 %d,%s 등의 포맷 코드는 문자열 안에 어떤 값을 삽입하기 위해 사용한다.
하지만 포맷코드를 숫자와 함께 사용한다면 더 유용하게 사용할 수 있다.
1)정렬과 공백
>>> "%10s" %hi
' hi'
위 예문처럼 %10s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨두라는 뜻이다.
>>> "%-10sjane" %hi
'hi jane'
hi를 왼쪽으로 정렬하고 나머지는 공백으로 채웠음을 볼 수 있다.
2) 소수점 표현하기
>>> "%0.4f" %3.42134234
3.4213
위와 같이 소수점 네번째 자리까지만 나타내고 싶을 경우에는 위와 같이 사용한다. '.' 의 의미는 소수점 포인트를 말하고 그 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말한다.
>>> "10.4%f" 3.42134234
' 3.4213'
위와 같이 소수점 네 번째 자리까지만 표시하고 전체길이가 10개인 문자열 공간에서 오른쪽으로 정렬하는 예를 보여준다.
7. format 함수를 사용한 포매팅
문자열의 format 함수를 사용하면 좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있다.
1) 숫자 바로 대입하기
>>> "I eat {0} apples.".format{3}
'I eat 3 apples.'
문자열중 {0} 이 숫자 3으로 바뀌었다.
2) 문자열 바로 대입하기
>>> "I eat {0} apples.".format{five}
'I eat five apples.'
3) 2개 이상의값 넣기
>>> number = 10
>>> day = "three"
>>> "I ate {0} apples. so I was sick for {1} days.".format(number,day)
'I ate 10 apples. so I was sick for three days.'
2개 이상의 값을 넣을 경우 문자열의 {0},{1}과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.
4) 이름으로 넣기
>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10,day=3)
' I ate 10 apples. so I was sick for 3 days'
위 예에서 볼 수있듯 {0},{1}과 같은 인덱스 항목 대신 더 편리한 {name}의 형태를 사용하는 방법도 있다.
{name} 형태를 사용할 경우에는 반드시 name=value와 같은 형태의 입력값이 있어야만 한다.
5) 인덱스와 이름을 혼용해서 넣기
>>> "I ate {0} apples. so I was sick for {day} days.".format(10,day=3)
'I ate 10 apples. so I was sick for 3 days.'
위와 같이 인덱스와 name=value 를 혼용하는 것도 가능하다.
6) 왼쪽 정렬 & 오른쪽 정렬 & 가운데 정렬
>>> "{0:<10}".format("hi")
'hi '
>>> "{0>:10}".format("hi")
' hi'
>>> "{0:^10}".format("hi")
' hi '
:<10 표현식을 사용하여 왼쪽으로 정렬하고 문자열의 자릿수를 10으로 맞출 수 있다.
마찬가지로 :>10 을 사용하면 오른쪽으로 정렬하고 문자열의 자릿수를 10으로 맞출 수 있다.
가운데 정렬은 :^ 기호를 사용하면 된다.
7) 공백 채우기
>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'
정렬할 때 공백 문자 대신에 지정한 문자 값으로 채워 넣는 것도 가능하다. 채워 넣을 문자 값은 정렬 문자<,>,^ 바로 앞에 넣어야한다.
8) 소수점 표현하기
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
>>> y = 3.42134234
>>> "{0:10.4f}".format(y)
'3.4213'
위 예는 format 함수를 사용하여 소수점 4자리까지 표현하는 방법과 앞서 살펴본 10.4f 의 표현식을 그대로 사용하여 자릿수를 10으로도 맞출 수 있다.
9) {또는} 문자 표현하기
>>> "{{ and }}".format()
'{ and }'
format 함수를 사용해 문자열 포매팅을 할 경우 {} 와 같은 중괄호 문자를 포매팅 문자가 아닌 문자 그대로 사용하고 싶은 경우에는 위의 예처럼 {{ }} 2개를 연속해서 사용하면 된다.
8. f 문자열 포매팅
파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있다.
다음과 같이 문자열 앞에 f접두사를 붙이면 f 문자열 포매팅 기능을 사용할 수 있다.
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.
f 문자열 포매팅은 위와같이 name,age와 같은 변수 값을 생성한 후에 그 값을 참조할 수 있다.
또한 f 문자열 포매팅은 표현식을 지원하기 때문에 다음과 같은 것도 가능하다.
>>> age= 30
>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'
딕셔너리는 f 문자열 포매팅에서 다음과 같이 사용할 수 있다.
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.
정렬은 다음과 같이 할 수 있다.
>>> f'{"hi":<10}'
'hi '
>>> f'{"hi":>10}'
' hi'
>>> f'{"hi":^10}'
' hi '
공백 채우기는 다음과 같이 할 수 있다.
>>> f'{"hi":=^10}'
'====hi===='
>>> f'{"hi":<10}'
'hi!!!!!!'
소수점은 다음과 같이 표현할 수 있다.
>>> y = 3.41234234
>>> f'{y:0.4f}'
'3.4123
>>> f'{y:10.4f}'
' 3.4123'
f 문자열에서 { } 문자를 표시하려면 다음과 같이 두 개를 동시에 사용해야 한다.
>>> f'{{ and }}
'{ and }'
출처 : 점프 투 파이썬
'파이썬의 기초' 카테고리의 다른 글
파이썬의 기초 ( 튜플 자료형) (0) | 2021.03.07 |
---|---|
파이썬의 기초 (리스트 자료형) (0) | 2021.03.06 |
파이썬의 기초(문자열 관련 함수) (0) | 2021.03.05 |
파이썬의 기초 (문자열 인덱싱과 슬라이싱) (0) | 2021.03.03 |
파이썬의 기초 (자료형) (0) | 2021.03.02 |