修正方法: 型エラー: 文字列またはバイト オブジェクトが必要です
Python の使用時に発生する可能性のあるエラーは次のとおりです。
TypeError : expected string or bytes-like object
このエラーは通常、 re.sub()関数を使用してオブジェクト内の一部のパターンを置換しようとしたが、操作しているオブジェクトが完全に文字列ではない場合に発生します。
次の例は、このエラーを実際に修正する方法を示しています。
エラーを再現する方法
次の値のリストがあるとします。
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
ここで、リスト内の文字以外のすべての文字を空の文字列に置き換えようとするとします。
import re
#attempt to replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', x)
TypeError : expected string or bytes-like object
リスト内の一部の値が文字列ではないため、エラーが発生します。
エラーを修正する方法
このエラーを修正する最も簡単な方法は、リストをstr()演算子でラップして文字列オブジェクトに変換することです。
import re
#replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', str (x))
#display results
print (x)
A B C D E
最初にstr()を使用してリストを文字列オブジェクトに変換したため、エラーは発生しないことに注意してください。
結果は、文字以外の文字がそれぞれスペースに置き換えられた元のリストになります。
注: re.sub()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。
パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした