TypeError 수정: Python에서 Object.__format__에 전달된 비어 있지 않은 형식 문자열

Fariba Laiq 2023년6월21일
TypeError 수정: Python에서 Object.__format__에 전달된 비어 있지 않은 형식 문자열

Python의 format() 메서드를 사용하면 변수를 대체하고 데이터 형식을 지정할 수 있습니다. 이 방법은 다음 이외의 입력을 처리하도록 설계되지 않았습니다.

  • s로 표시된 문자열
  • d로 표시되는 십진수
  • f로 표시되는 플로트
  • c로 표시된 문자
  • o로 표시되는 8진수
  • x로 표시되는 16진수
  • b로 표시된 바이너리
  • 지수는 e로 표시됩니다.

다른 데이터 유형이 메소드에 액세스하는 경우 인터프리터는 다음 오류를 발생시킵니다.

TypeError: non-empty format string passed to object.__format__

Python에서 TypeError: Non-Empty Format String Passed to Object.__format__에 대한 원인 및 해결책

예를 들어 byte 데이터 유형과 같이 이 메서드가 없는 데이터 유형에서 format() 메서드를 호출하려고 한다고 가정합니다. 해석기는 byte 유형 개체에 format() 메서드가 없기 때문에 오류를 발생시킵니다.

다음 코드에서는 의도적으로 byte 데이터 유형을 사용하여 format() 메서드를 호출했습니다.

예제 코드:

# Python 3.x
"{:10}".format(b"delftstack")

출력:

#Python 3.x
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-1909c614b7f5> in <module>()
----> 1 '{:10}'.format(b'delftstack')

TypeError: unsupported format string passed to bytes.__format__

이 오류에 대한 해결책은 명시적으로 데이터 유형을 바이트에서 문자열로 변환하는 것입니다. 변환을 위해 !s 기호를 사용합니다.

예제 코드:

# Python 3.x
s = "{!s:10s}".format(b"delftstack")
print(s)

출력:

#Python 3.x
b'delftstack'

TypeError: non-empty format string 전달된 object.__format__None 형식을 지정하려고 할 때 발생합니다.

예제 코드:

# Python 3.x
"{:.0f}".format(None)

출력:

#Python 3.x
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-89103a1332e2> in <module>()
----> 1 '{:.0f}'.format(None)

TypeError: unsupported format string passed to NoneType.__format__

해결 방법은 None 대신 유효한 데이터 유형을 전달하는 것입니다.

예제 코드:

# Python 3.x
s = "{!s:10s}".format(b"delftstack")
print(s)

출력:

#Python 3.x
b'delftstack'
작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

관련 문장 - Python Error