TypeError を修正: Python で Object.__format__ に渡される空でないフォーマット文字列
Fariba Laiq
2023年6月21日
Python の format()
メソッドを使用すると、変数を置換してデータのフォーマットを実行できます。 このメソッドは、次以外の入力を処理するようには設計されていません。
s
で表される文字列d
で表される 10 進数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'
None
をフォーマットしようとすると、TypeError: non-empty format string passed to object.__format__
も発生します。
コード例:
# 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
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
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません