[Python]파이썬 문자열 자료형 정리 3
Updated:
파이썬의 문자열 데이터 타입을 정리한 세 번째 글입니다. 이번 포스팅에서는 문자열 포맷팅에 대해서 정리했습니다.
파이썬에서는 복잡한 문자열 출력을 위한 문자열 포맷팅(string formatting)를 지원합니다. 문자열 포맷팅은 문자열 안의 특정한 값을 바꾸어야 할 경우에 사용할 수 있는 방법입니다. 문자열 포맷팅 방법에는 % 포맷팅, format 메서드, 그리고 f-string을 사용하는 방식이 있습니다.
1. %포맷팅Permalink
문자열 뒤에 % 기호를 붙이고 그 뒤에 값을 붙이면, 문자열 안에 값을 삽입할 수 있습니다.
"문자열" % 값
%포맷팅은 위와 같은 형태로 사용할 수 있습니다.
이때, 문자열 안에 %
기호로 시작하는 문자열 포맷 코드를 사용하는데요, 자료형 별로 사용하는 포맷 코드가 다릅니다.
코드 | 설명 |
---|---|
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수(Integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 % 자체) |
1) 정수 바로 대입하기Permalink
>>> "I eat %d apples." % 3
'I eat 3 apples.'
위 예시는 문자열 안에 정수를 삽입하는 방법입니다. 문자열 안에서 숫자를 삽입하고 싶은 자리에 %d 문자를 넣어주고, 숫자는 문자열 뒤의 % 문자 다음에 넣어줍니다.
2) 문자열 바로 대입하기Permalink
>>> "I eat %s apples." % "five"
'I eat five apples.'
문자열 안에 문자열을 삽입하기 위해서는 %s 포맷 코드를 사용해줍니다.
3) 숫자 값의 변수 대입하기Permalink
>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'
% 뒤에 문자열 대신 변수를 작성해서 변수를 대입할 수 있습니다.
4) 2개 이상의 값 넣기Permalink
>>> 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 포맷코드Permalink
위의 포맷코드 표와 같이, 자료형별로 사용하는 포맷코드가 다릅니다. 그런데 %s
포맷코드는 어떤 형태의 값이든 변환하여 넣을 수 있습니다.
>>> "I have %s apples" % 3
'I have 3 apples'
>>> "rate is %s" % 3.234
'rate is 3.234'
정수를 문자열 안에 삽입하려면 %d를, 3.234를 삽입하려면 %f 코드를 사용해야합니다. 하지만 %s는 자동으로 %뒤의 값을 문자열로 바꿔줄 수 있습니다.
6) 정렬 및 공백Permalink
>>> >>> "Hello %20s" % "python"
'Hello python'
>>> "%-20s python" % "Hello"
'Hello python'
포맷 코드를 숫자와 함께 사용할 수도 있습니다. 이떄 포맷코드 안에 숫자를 삽입하게 된다면 정렬과 공백에 활용할 수 있습니다.
%20s는 전체 길이가 20개인 문자열에서, 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미입니다. 반대로 왼쪽 정렬은 ‘-‘를 붙여서 활용할 수 있습니다. 따라서 위의 예시에서 %-20s는 전체 길이가 20인 문자열에서, 대입되는 값을 왼쪽 정렬하고 나머지는 공백으로 두라는 의미입니다.
7) 소수점 표현하기Permalink
>>> "%0.4f" % 3.42134234
'3.4213'
>>> "%10.4f" % 3.42134234
' 3.4213'
% 뒤의 숫자를 소수점 넷째 자리 까지 표현하고 싶은 경우에는 위와 같이 [0.x]f 형태로 사용합니다. 포맷 문자 내의 소수점(%0.) 뒤의 숫자는 소수점 뒤에 나올 숫자의 개수를 뜻합니다.
포맷 코드 안에서 소수점 앞의 숫자는 정렬과 공백에 활용할 수 있습니다. ‘%10.’는 전체 길이가 10개인 문자열 공간에서 %뒤의 문자를 오른쪽으로 정렬하는 것을 의미합니다.
2. format 메서드Permalink
format 메서드를 사용하여 문자열을 포맷팅할 수도 있습니다. 이떄는 {} 기호를 활용하여 포맷팅합니다. 그리고 %포맷팅과 달리 자료형을 표시할 필요가 없습니다.
1) 숫자 바로 대입하기Permalink
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
{} 항목이 숫자 3으로 바뀌었습니다.
2) 문자열 바로 대입하기Permalink
>>> "I eat {0} apples".format("five")
'I eat five apples'
{}
항목이 문자열 five으로 바뀌었습니다.
3) 숫자 값의 변수 대입하기Permalink
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
{}
항목이 number 변수값인 3으로 바뀌었습니다.
4) 2개 이상의 값 넣기Permalink
>>> 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.'
{0}
, {1}
과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀝니다.
5) 이름으로 넣기Permalink
>>> "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.'
인덱스 항목 대신 {name}
항목을 활용할 수 있습니다. 이 때 format 메서드에는 name=value
와 같은 형태의 입력값이 있어야 합니다.
6) 정렬 및 공백Permalink
>>> "{0:<10}".format("hi") # 왼쪽 정렬
'hi '
>>> "{0:>10}".format("hi") # 오른쪽 정렬
' hi'
>>> "{0:^10}".format("hi") # 가운데 정렬
' hi '
왼쪽 정렬은 :<10
, 오른쪽 정렬은 :>10
, 가운데 정렬은 :^10
을 사용하여 할 수 있습니다. 이떄 숫자는 문자열의 길이를 뜻합니다.
>>> "{0:=^10}".format("hi") # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='
>>> "{0:!<10}".format("hi") # 가운데 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'
이때 공백을 문자로도 채울 수 있습니다. 채워 넣을 문자를 <
, >
, ^
앞에 넣어야 합니다.
7) 소수점 표현하기Permalink
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
>>> "{0:10.4f}".format(y)
' 3.4213'
%포맷팅과 마찬가지로 [0.x]f를 활용하여 소수점을 표현합니다. 이떄 소수점 앞자리의 숫자를 바꾸어 문자열의 길이와 공백도 변경할 수 있습니다.
8) 중괄호 표현하기Permalink
>>> "내 이름은 {}입니다.".format("홍길동")
'내 이름은 홍길동입니다.'
>>> "내 이름은 }입니다.".format("홍길동")
'내 이름은 {홍길동}입니다.'
중괄호를 그대로 문자열에 사용하기 위해서는 중괄호 두 개를 연속으로 작성해야 합니다.
3. f-stringPermalink
1) 변수 대입하기Permalink
f 문자열 포맷팅은 문자열 앞에 f 접두사를 붙여서 활용할 수 있습니다.
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
f 문자열 포맷팅은 변수 값을 생성하고 그 값을 참조할 수 있습니다.
2) 표현식 활용하기Permalink
>>> age = 30
>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'
또한 +, - 와 같은 표현식을 지원합니다.
3) 딕셔너리 활용하기Permalink
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
딕셔너리의 key와 value를 활용하여 f 문자열 포맷팅에서 활용할 수 있습니다.
4) 정렬 및 공백Permalink
f 문자열 포맷팅을 활용한 정렬 및 공백은 format 메서드와 비슷하게 활용할 수 있습니다.
>>> f'{"hi":<10}' # 왼쪽 정렬
'hi '
>>> f'{"hi":>10}' # 오른쪽 정렬
' hi'
>>> f'{"hi":^10}' # 가운데 정렬
' hi '
>>> f'{"hi":=^10}' # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='
>>> f'{"hi":!<10}' # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'
5) 소수점 표현하기Permalink
소수점 표현도 format 메서드와 비슷하게 활용할 수 있습니다.
>>> y = 3.42134234
>>> f'{y:0.4f}' # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}' # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
' 3.4213'
6) 중괄호 표현하기Permalink
중괄호 표현도 format 메서드와 비슷하게 중괄호를 두 번 작성하여 활용할 수 있습니다.
>>> f''
'{ and }'
Reference
https://wikidocs.net/13#_16
https://datascienceschool.net/01%20python/02.04%20파이썬의%20문자열%20형식화.html
Leave a comment