No puede redefinir métodos en tipos incorporados, y no puede cambiar el valor predeterminado del parámetro errors
a str.decode()
. Sin embargo, hay otras maneras de lograr el comportamiento deseado.
La manera un poco más bonitas:decode()
definir sus propias funciones:
def decode(s, encoding="ascii", errors="ignore"):
return s.decode(encoding=encoding, errors=errors)
Ahora, tendrá que llamar decode(s)
en lugar de s.decode()
, pero eso no no está tan mal, ¿verdad?
El truco: No se puede cambiar el valor por defecto del parámetro errors
, pero puede sobrescribir lo que el controlador para el defecto errors="strict"
hace:
import codecs
def strict_handler(exception):
return u"", exception.end
codecs.register_error("strict", strict_handler)
Esto va a cambiar esencialmente el comportamiento de errors="strict"
al comportamiento estándar "ignore"
. Tenga en cuenta que se tratará de un cambio global que afectará a todos los módulos que importe.
Recomiendo ninguna de estas dos formas. La verdadera solución es obtener sus codificaciones correctas. (Soy muy consciente de que esto no siempre es posible.)