[Python] String Formatting
문자열 formatting
1) 문자열 format code 사용하기
(1) 문자열 format code
code | description |
---|---|
%s | 문자열(string) |
%c | 문자 1개(character) |
%d | 정수(integer) |
%f | 부동소수(floating-point) |
%% | Literal % |
(2) 숫자/문자열 대입
-
숫자/문자열을 바로 대입하거나 숫자/문자열을 나타내는 변수로 대입!
number = 10 day = "two" print('I ate %d chocolate chip cookies in %s days.' % (number, day)) ---------------------------------------------------------------------- 'I ate 10 chocolate chip cookies in two days.'
(3) %s
, %%
사용
%s
포맷 코드에서는 어떤 형태의 값이든 변환해 넣을 수 있다.%s
에string / integer / floating-point
중 어떤 것을 넣더라도 자동으로%
뒤에 있는 값을 문자열로 바꾸기 때문이다.-
또한, formatting 연산자와
%
를 같이 쓸 때는%%
를 쓴다.print('My grade is %s%%.' % 99.25) ---------------------------------------------------------------------- 'My grade is 99.25%.'
2) format code와 숫자 함께 사용하기
(1) 정렬과 공백
-
예를 들어,
%10s
는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고, 그 앞의 나머지는 공백으로 채운다.print("%10s" % 'Hello') ---------------------------------------------------------------------- ' Hello'
(2) 소수점 표현하기
-
아래 예제는 소수점 2번째 자리까지 나타내도록 한 코드다.
.
의 의미는 소수점 포인트를 의미하고, 그 뒤의 숫자 2는 소수점 뒤에 나올 숫자의 개수를 의미한다.print("%10.2f" % 3.141592) ---------------------------------------------------------------------- ' 3.14'
3) format 함수를 사용한 formatting
(1) 숫자/문자열 바로 대입하기
print('I ate {0} grapes and {1} oranges.'.format(10, 'five'))
----------------------------------------------------------------------
'I ate 10 grapes and five oranges.'
(2) 이름으로 넣기
-
{name}
형태를 사용하는 경우 format 함수에는 반드시name=value
와 같은 형태의 입력값이 있어야 한다.print('I ate {number} chocolate chip cookies and was happy for {day} days.'.format(number=10, day=5)) ---------------------------------------------------------------------- 'I ate 10 chocolate chip cookies and was happy for 5 days.'
(3) 인덱스와 이름 혼용해서 넣기
-
인덱스 항목과
{name}
형태를 혼용해서 넣는 것도 가능하다.print('I ate {0} chocolate chip cookies and was happy for {day} days.'.format(10, day=5)) ---------------------------------------------------------------------- 'I ate 10 chocolate chip cookies and was happy for 5 days.'
(4) 정렬
-
왼쪽 정렬:
:<
print("{0:<10}".format('hello')) ---------------------------------------------------------------------- 'hello '
-
오른쪽 정렬:
:>
print("{0:>10}".format('hello')) ---------------------------------------------------------------------- ' hello'
- 가운데 정렬:
:^
- 가운데 정렬할 때 공백 갯수가 홀수개(2n+1)이면 앞에 n개 뒤에 (n+1)개를 배치하게 된다.
print("{0:^10}".format('hello')) ---------------------------------------------------------------------- ' hello '
(5) 공백 채우기
-
정렬문자
<, >, ^
바로 앞에 채워 넣을 지정문자를 넣어준다.print("{0:#^10}".format('hello')) ---------------------------------------------------------------------- '##hello###'
(6) 소수점 표현하기
x = 3.141592
print("{0:10.4f}".format(x))
----------------------------------------------------------------------
' 3.1416'
4) f 문자열 formatting
💡 Python version 3.6부터 f 문자열 formatting 기능 사용 가능
(1) f 접두사
-
f 접두사를 이용해 f 문자열 formatting 기능을 사용할 수 있다.
name = 'Jinsol Kim' age = 100 print(f'My name is {name}, and I am {age} years old.') ---------------------------------------------------------------------- 'My name is Jinsol Kim, and I am 100 years old.'
(2) f 문자열 formatting에서 표현식의 사용
- f 문자열 formatting은 표현식을 지원한다.
- 표현식이란 문자열 안에서 변수와
+, -
와 같은 수식을 함께 사용하는 것을 의미.
age = 100 print(f'I will be {age+1} years old next year.') ---------------------------------------------------------------------- 'I will be 101 years old next year.'
- 표현식이란 문자열 안에서 변수와
(3) f 문자열 formatting에서 딕셔너리의 사용
- 딕셔너리를 사용하여 f 문자열 formatting 표현하기도 가능!
'
와"
의 사용 유의하자! 동시에 쓰지 않도록!!
d = {'name': 'Jinsol Kim', 'age': 100} print(f'My name is {d["name"]}, and I am {d["age"]} years old.') print(f"My name is {d['name']}, and I am {d['age']} years old.") ---------------------------------------------------------------------- 'My name is Jinsol Kim, and I am 100 years old.' 'My name is Jinsol Kim, and I am 100 years old.'
(4) 정렬
print(f'{"hello":<10}') # 왼쪽정렬
print(f'{"hello":>10}') # 오른쪽정렬
print(f'{"hello":^10}') # 가운데정렬
----------------------------------------------------------------------
'hello '
' hello'
' hello '
(5) 공백 채우기
f'{"hello":#^10}'
----------------------------------------------------------------------
'##hello###'
(6) 소수점 표현하기
x = 3.141592
print(f'{x:10.4f}')
----------------------------------------------------------------------
' 3.1416'
Leave a comment