print를 할 때 %, format 또는 f""를 넣어 출력할 문장에 변수를 대입할 수 있다. 이렇게 항상 print와 한 세트로 써서 print를 하는 방법으로 인식하고 있었는데, 정확히는 문자열을 formatting하는 방법이다. 만들어 놓고 print를 안 할 수도 있는 거고.
1. %-formatting
좀 불편해서 잘 안쓰는 데 정리만 해둔다. 문자열 내에 %s(문자), %d(정수), %f(실수) 등을 넣어 변수의 type을 고정해주면서 들어갈 자리를 만들어준다. 문자열 뒤에 %를 넣고 변수를 쓴다.
"Hello, %s." % name
여러개를 줄 땐 아래와 같이 괄호를 쓴다.
"Today is %d/%d, %s." % (month, day, weekday)
2. str.format()
문자열 안에 { }를 넣어 자리를 만들어주고, 문자열 뒤 .format()을 붙인다. { } 안에는 .format() 괄호 속 인자들을 index를 통해 넣을 수 있다. 키워드 인자로 주는 것도 가능하다.
'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred', other='Georg')
print 결과
The story of Bill, Manfred, and Georg.
여기서 Georg는 other이라는 키워드를 통해 들어갔다.
dict를 넣을 땐 좀 번거롭다. 참고 링크 7.1.2 문자열 format() 메서드
table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
'Jack: {0[Jack]:d}, Sjoerd: {0[Sjoerd]:d}, Dcab: {0[Dcab]:d}'.format(table))
print 결과
Jack: 4098, Sjoerd: 4127, Dcab: 8637678
table이 .format() 안에서 index가 0이니까 0[Jack] 이런 식으로 호출한다.
그 뒤에 붙은 :d는 포맷 옵션 type에 decimal을 준 것이다. 참고 링크 포맷 문자열 문법
'Jack: {Jack:d}, Sjoerd: {Sjoerd:d}, Dcab: {Dcab:d}'.format(**table))
이렇게 쓰면 table을 variable length keyword argument(키워드 가변 인자)로 받는다. 결과는 같다. 참고 링크
3. f-strings
편의상 f어쩌구라고 기억하고 있던 방법. 가장 자주 쓰는 건데 파이썬 3.6부터 나왔단다. 진짜 새 거네.
문자열 따옴표 앞에 f를 붙이고 문자열 안에 { }를 넣어 변수 자리를 만들어준다. 그리고 { } 안에 일반 변수든 dict[index]든 list[index]든 연산식이든 method든 object.keyword든 넣어주면 끝. 정렬 옵션도 가능(참고 링크).
다만 일반 문자열과 마찬가지로 문자열 안팎에 쓰는 따옴표의 종류에 유의하기.
이렇게 { }를 넣는 걸 Literal String Interpolation format이라 한다는 데 여기서 interpolation은 insertion의 의미 같다. 웹스터 링크 기준 3번의 의미로만 알고 있어서 처음엔 뭔소린가 했음..
중간에 줄바꿈이 들어가는 문장을 한 문자열로 만들고 싶다면 문자열 좌우에 쌍따옴표 1개씩이 아니라 3개씩 넣어주면 된다. 참고 링크 multiline f-strings 부분
'Python' 카테고리의 다른 글
Python - Tuple (0) | 2021.01.15 |
---|---|
Python - List (0) | 2021.01.14 |
Python - Function Parameters (0) | 2021.01.14 |
Python - 변수와 기초 연산 (0) | 2021.01.13 |
Python - 입력값 받기 (0) | 2020.12.28 |