[Python3] 문자열을 포맷팅하는 다양한 방식

winter·2021년 4월 12일
post-thumbnail

python3 쌩기초 다시 들으면서
조금 헷갈렸던 포맷팅 방법에 대해 다시 정리해봄

format 매소드를 이용한 문자열 포맷팅

year = 2019
month = 10
day = 29
print("오늘은 " + str(year) + "년 " + str(month) + "월 " + str(day) + "일" + "입니다.")
print("오늘은 {}년 {}월 {}일입니다." .format(year, month, day))

#값을 넣어줄 공간을 중괄호 {}로 채우고,
#첫 번째, 두 번째, 세 번째 중괄호를 포맷팅하는 것

#date_string = "오늘은 {}년 {}월 {}일입니다."
#print(date_string.format(year, month, day))

#이렇게 쓰면 좀 더 간결하게 가능

format 매소드 다루기

print("저는 {1}, {0}, {2}를 좋아합니다!".format("박지성", "유재석", "빌 게이츠"))
#편리하게 순서 바꾸기

num_1 = 1
num_2 = 3
print("{0} 나누기 {1}은(는) {2:.2f}입니다.".format(num_1, num_2, num_1 / num_2))

#근데 여기에서 앞에 두 파라미터를 그냥 중괄호로 비워두면 오류 뜸
#앞 두 파라미터에도 0, 1을 채워줘야 하는듯
#.2f는 실수에서 소수 둘째자리까지 표현하겠다라는 말

문자열을 포맷팅하는 다양한 방식

파이썬에는 문자열 포맷팅을 하는 방법이 몇 가지 더 있는데 좀 더 정리해보자.

가장 오래된 방식 (% 기호)

name = "겨울"
age = 10

print("제 이름은 %s이고 %d살입니다." % (name, age))

제 이름은 겨울이고 10살입니다.

이제는 잘 쓰지 않는.. 옛날 방식이라고 함 (Aㅏ.. 교수님.. 그는 대체.. 🤦‍♀️)
%s, %d와 같은 '포맷 스트링'이라는 것을 사용하는 방식인데
C나 자바 등 많은 언어들에서 이와 유사한 방식으로 문자열 포맷팅을 함.
그래서 C에서 scanf 배운 순간부터 주구장창 쓰고 있는 중.

현재 가장 많이 쓰는 방식 (format 메소드)

name = "겨울"
age = 10

print("제 이름은 {}이고 {}살입니다.".format(name, age))

제 이름은 겨울이고 10살입니다.

2020년 2월 기준,
파이썬 커뮤니티에서 가장 많이 사용하는 방식이라고 함.

새로운 방식 (f-string)

name = "겨울"
age = 10

print(f"제 이름은 {name}이고 {age}살입니다.")

제 이름은 겨울이고 10살입니다.

파이썬 버전 3.6부터 새롭게 나온 방식.
아직 완전히 대중화되지는 않았지만 좋은 평을 받고 있기 때문에,
곧 f-string을 사용하는 추세가 될 수도 있다고 함.
확실히 f-string으로 작성했을 때 훨씬 더 직관적으로 보인다.

profile
추워도 괜찮아

0개의 댓글