티스토리 뷰

#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 }'

 


출처 : 점프 투 파이썬

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함