1. %
문자열 포맷 코드
#숫자 대입
>>> "I eat %d apples." % 3
'I eat 3 apples.'
#문자열 대입
>>> "I eat %s apples." % "five"
'I eat five apples.'
#정수형 변수 대입
>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'
#2개 이상의 값 넣기
>>> 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.'
+@
%s 포맷 코드는 어떤 형태의 값이든 변환하여 넣을 수 있다.
>>> "I have %s apples" % 3
'I have 3 apples'
>>> "rate is %s" % 3.234
'rate is 3.234'
3을 문자열 안에 삽입하려면 %d를 사용하고, 3.234를 삽입하려면 %f를 사용해야한다. 하지만 %s를 사용하면 이런 것을 생각하지 않아도 된다. 왜냐하면 %s는 자동으로 %뒤에 있는 값을 문자열로 바꾸기 때문이다.
+@
포맷팅 연산자 %와 %를 같이 쓸 때는 %%를 쓴다
"Error is %d%." % 98
#오류
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: incomplete format
#정상출력
>>> "Error is %d%%." % 98
'Error is 98%.'
문자열 안에 %d같은 포맷팅 연산자가 없다면 %는 홀로 쓰여도 상관없다.
포맷 코드와 숫자 혼용
정렬과 공백
>>> "%10s" % "HI"
' HI'
>>> "%-10sJAIN." % 'HI'
'HI JAIN.'
%10s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미.
%-10s는 왼쪽 정렬.
소수점 표현하기
>>> "%0.4f" % 3.33333333
'3.3333'
3.33333333을 소수점 네 번째 자리까지만 나타내고 싶은 경우.
" . "의 의미는 소수점 포인트를 말하고, 그 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말한다.
>>> "%10.4f" % 3.33333333
' 3.3333'
위는 숫자 3.33333333을 소수점 네 번째 자리까지만 표시하고 전체 길이가 10개인 문자열 공간에서 오른쪽으로 정렬하는 예를 보여준다.
2. "{ }".format()
format 함수를 사용한 포맷팅
#숫자 바로 대입
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
#문자열 바로 대입하기
>>> "I eat {0} apples".format("five")
'I eat five apples'
#숫자 값을 가진 변수로 대입하기
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
#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개 이상의 값을 넣을 경우, 중괄호{} 에 들어갈 순서를 지정할 수 있다.
#순서 지정하지 않는 경우 왼쪽부터
>>> '{} x {} = {}'.format(2, 3, 2*3)
'2 x 3 = 6'
#순서 지정하는 경우
>>> '{1} x {0} = {2}'.format(2, 3, 2*3)
'3 x 2 = 6'
이름으로 넣기
>>> "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.'
이름으로 넣을 경우 format 함수에는 반드시 name=value와 같은 형태의 입력값이 있어야만 한다.
왼쪽정렬, 오른쪽정렬, 가운데정렬
#왼쪽정렬
>>> "{0:<10}".format("hi")
'hi '
#오른쪽정렬
>>> "{0:>10}".format("hi")
' hi'
#가운데정렬
>>> "{0:^10}".format("hi")
' hi '
:<10 표현식을 사용하면 치환되는 문자열을 왼쪽으로 정렬하고 문자열의 총 자릿수를 10으로 맞출 수 있다.
오른쪽 정렬은 :< 대신 :> 을 사용한다.
:^ 기호를 사용하면 가운데 정렬도 가능하다.
공백 채우기
# =로 공백 채우기
>>> "{0:=^10}".format("hi")
'====hi===='
#!로 공백 채우기
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'
채워넣을 문자 값은 정렬 문자 <, >, ^ 바로 앞에 넣어야 한다.
소수점 표현하기
#소수점 표현
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
#자릿수 10으로..
>>> "{0:10.4f}".format(y)
' 3.4213'
0.4f를 사용한것을 볼 수 있다. 아래 코드는 자릿수를 10으로 맞춘것이다.
{ 또는 } 문자 표현하기
>>> "{{ and }}".format()
'{ and }'
format함수를 사용해 문자열 포매팅을 할 경우 중괄호 문자를 문자 그대로 사용하고싶을 경우, 연속해서 사용하면 된다.
3. f문자열 포맷팅
파이썬 3.6버전부터 지원하는 기능
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
f 문자열 포맷팅은 위와 같이 변수값을 생성한 후, 그 값을 참조할 수 있다.
#표현식을 지원한다.
>>> age = 30
>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'
>>> f"{2*37}"
'74'
#딕셔너리를 사용할 수 있다. KEY-VALUE 쌍을 갖는 자료형 사용 가능
>>> 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.42134234
>>> f'{y:0.4f}' # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}' # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
' 3.4213'
# { } 문자 표시
>>> f'{{ and }}'
'{ and }'
정렬, 공백 채우기, 소수점 표현 등
#함수
>>> def to_lowercase(input):
... return input.lower()
>>> name = "Eric Idle"
>>> f"{to_lowercase(name)} is funny."
'eric idle is funny.'
#메소드
>>> f"{name.lower()} is funny."
'eric idle is funny.'
함수 메소드 등의 타입도 가능하다.
'Language > Python&Django' 카테고리의 다른 글
[파이썬] join() 을 이용해 문자열 사이에 구분자(특정문자) 넣기 (1) | 2021.08.20 |
---|---|
[파이썬] 리스트 출력 : 한줄에 하나의 요소씩 출력하는 방법 (2) | 2021.07.29 |
파이썬 코드 실행 시간 측정해보기 (초단위) (0) | 2021.07.13 |
파이썬에서 2차원 리스트를 생성할 때 주의해야할 점. (0) | 2021.02.10 |
파이썬 문자-아스키코드 변환 (chr, ord), 아스키코드표 (0) | 2021.02.09 |
댓글