밤하늘공작소
Python에서 포맷팅하기 본문
python에서는 포맷팅이라는 것을 제공해줍니다.
한 번 예를 들어보겠습니다.
year = 2022
month = 6
day = 28
print("오늘은 " + str(year) + "년 " + str(month) + "월 " + str(day) + "일이다.")
이러한 코드가 있습니다. 여기에서 year와 month, day는 숫자형이기 때문에 그냥 문자에 더하면 에러가 납니다. 그렇기 때문에 문자형으로 변환한 후에 더해주어야 합니다. 그런데 더해주게 되어도, 띄어쓰기를 신경을 써야 되기 때문에 힘들고, 코드가 더러워질 수 있습니다.
그럴 때 포맷팅을 사용하는 것입니다.
위와 똑같은 코드를 적어보겠습니다.
year = 2022
month = 6
day = 28
print("오늘은 {}년 {}월 {}일이다.".format(year, month, day))
문자열 안에 {}를 넣으면 그 후. format()의 파라미터로 오는 값이 자동으로 들어가게 됩니다. 이렇게 하면 위에 코드보다 더 깔끔하게 코드를 적을 수 있습니다.
포맷팅을 할 때 변수가 들어오는 순서도 바꿀 수 있습니다.
year = 2022
month = 6
day = 28
print("오늘 {1}년 {0}월 {2}일이다.".format(month, year, day))
예를 들기 위해 month와 year의 순서를 바꾸었습니다. 그리고 {} 안에 파라미터 중 원하는 순서를 적었습니다. (프로그래밍 언어에서는 1부터가 아닌 0부터 적습니다.) 그렇다면 이렇게 할 수 있습니다.
year = 2022
month = 6
day = 28
print("오늘은 {0}년 {0}월 {0}일이다.".format(month, year, day))
이렇게 하면 "오늘은 6년 6월 6일이다."라고 출력이 됩니다. 왜냐하면 format()의 0번째(첫 번째) 파라미터인 month를 모든 곳에 대입하게 되기 때문입니다.
포맷팅에서 + 1과 같은 연산을 할 수 있습니다. 다시 코드를 다시 처음 포맷팅을 사용한 때로 돌려놓고, 코드를 더 작하겠습니다.
year = 2022
month = 6
day = 28
print("오늘은 {}년 {}월 {}일이다.".format(year, month, day + 1))
이렇게 하면 "오늘은 2022년 6월 29일이다."라고 출력됩니다.
또 이 글을 읽으신 후 저는 06과 같이 앞에 공이 붙는 것이 필요하다고 하시는 분이 있을 수 있습니다. 그러면 이렇게 코드를 작성하시면 됩니다.
year = 2022
month = 6
day = 28
print("오늘은 {:04}년 {:02}월 {:02}일이다.".format(year, month, day))
여기서 :0 뒤에 숫자가 최소 필요한 숫자의 크기이고 최소 크기보다 숫자의 크기가 작다면, 0을 붙여줍니다.
최근에 python에서 새로운 포맷팅 방법이 있습니다. python 3.6 버전 이상의 python에서 지원을 합니다.
아까와 똑같은 예제로 작성해보겠습니다.
year = 2022
month = 6
day = 28
print(f"오늘은 {year}년 {month}월 {day}일이다.")
이렇게 적는 것을 "f-string"이라고 합니다. f-string에서는 문자열에 앞에 f를 붙인 후 {} 안에 원하는 변수 이름을 넣을 수 있습니다. 그리고 위에서 소개했던 다른 연산 방법도 사용 가능합니다.
'코딩 > Python' 카테고리의 다른 글
Python에서 문자 자르기 (0) | 2022.07.22 |
---|---|
Python 리스트 활용 팁 (6) | 2022.07.11 |
Python에서 문자를 숫자형으로 바꾸기 (0) | 2022.06.20 |
Python 에서 사용자의 입력 받기 (2) | 2022.06.17 |
Python에서 json 파일 읽기·쓰기 (0) | 2022.06.13 |