파이썬 포맷 오류 해결 방법
파이썬에서 문자열을 포맷팅할 때, 각 변수를 { } 로 감싸고 format() 함수를 이용하여 값을 대입하는 것이 일반적입니다. 하지만 때로는 이 과정에서 발생하는 오류들이 있어 이에 대해 정리해보았습니다.
1. 중괄호 처리 오류
문자열 안에서 중괄호를 사용하고 싶을 때, 중괄호를 두 번 사용하면 됩니다. 하지만 때로는 가독성을 위해 중괄호를 한 번만 사용하고 싶을 때가 있습니다. 이 때는 다음과 같이 중괄호 앞에 백슬래시를 붙여주면 됩니다.
python
print("\{\}".format('hello')) # 출력 결과: {}
2. 순서 지정 오류
format() 함수 안에서는 중괄호 안에 순서 또는 변수 이름을 지정하여 값을 대입할 수 있습니다. 이 때 순서가 지정되어 있을 때, 중괄호 안에 순서를 다르게 지정하는 경우 오류가 발생할 수 있습니다. 따라서 순서가 지정되어 있으면 중괄호 안에 변수 이름을 지정하거나 변수를 바로 대입해야 합니다.
python
print("{0} {1} {1}".format('hello', 'world')) # 출력 결과: hello world world
print("{1} {0}".format('world', 'hello')) # 출력 결과: hello world
print("{a} {b}".format(a='hello', b='world')) # 출력 결과: hello world
print("{'hello'}".format()) # 출력 결과: {hello}
위 코드에서는 2번째 줄에서 중괄호 안에서 1번째와 2번째 순서가 바뀌었으므로 이곳에서 오류가 발생합니다. 3번째 줄에서는 변수 이름을 지정하여 값을 대입했고, 4번째 줄에서는 중괄호 안에 따옴표를 붙여 문자열을 직접 넣어주었습니다.
3. 형식 지정 오류
format() 함수를 이용할 때 값을 문자열로 변환하기 전에 미리 형식을 지정할 수 있습니다. 이 때 형식 지정 문자열에서 사용하는 서식 지정자들에 대해 잘못 사용하면 오류가 발생할 수 있습니다.
python
print("{:.2f}".format(3.14159)) # 출력 결과: 3.14
print("{:d}".format(3.14159)) # 출력 결과: ValueError: Unknown format code 'd' for object of type 'float'
print("{:f}".format('hello')) # 출력 결과: TypeError: unsupported format string passed to str.__format__
위 코드에서는 2번째 줄에서 소수점 이하 자리수를 지정하는 {:.2f} 서식 지정자를 이용하여 실수형을 문자열로 변환했습니다. 3번째 줄에서는 실수형으로 변환하지 않은 정수형에 대해 10진수를 지정하는 {:d} 서식 지정자를 이용했기 때문에 오류가 발생합니다. 마지막 줄에서는 문자열에 대해 실수형을 지정하는 {:f} 서식 지정자를 이용했기 때문에 TypeError가 발생합니다.
4. 변수 오류
마지막으로 format() 함수를 이용할 때 변수를 잘못 사용하는 경우가 있습니다. 이 때는 오류 메시지를 확인하고 변수를 올바르게 지정해주어야 합니다.
python
print("{name} {age}".format(age=20)) # 출력 결과: KeyError: 'name'
위 코드에서는 변수 name이 지정되어 있지 않았으므로 KeyError가 발생합니다.
위와 같이 파이썬 문자열 포맷 오류를 방지하기 위해서는 중괄호 처리, 순서 지정, 형식 지정, 변수 처리 등에 유의해야 합니다. 여러분들은 이 포스팅을 참고하여, 자신이 시도한 코드에 오류가 있으면 위의 방법을 시도해보세요!