組み込み型のメソッドを再定義することはできません。errors
パラメータのデフォルト値をstr.decode()
に変更することはできません。しかし、望ましい動作を達成するための他の方法もあります。
少しよりよい方法:独自のdecode()
関数を定義:
def decode(s, encoding="ascii", errors="ignore"):
return s.decode(encoding=encoding, errors=errors)
さて、あなたはdecode(s)
代わりのs.decode()
を呼び出す必要がありますが、それがあまりにも悪くはない、それはないですか?
ハック:あなたがerrors
パラメータのデフォルト値を変更することはできませんが、がデフォルトerrors="strict"
のハンドラが何をするか上書きすることができます。
import codecs
def strict_handler(exception):
return u"", exception.end
codecs.register_error("strict", strict_handler)
これは、本質的に動作を変更しますerrors="strict"
を標準"ignore"
の動作に変換します。これはグローバルな変更であり、インポートするすべてのモジュールに影響します。
この2つの方法のどちらもお勧めしません。本当の解決策はエンコーディングを正しく行うことです。 (私は、これは必ずしも可能ではないことを十分承知している)