我有一个 Python 2.7 程序,可以从各种外部应用程序中写出数据。当我写入文件时,我不断地遇到异常,直到我将 .decode(errors="ignore")
添加到正在写出的字符串中。 (FWIW,以 mode="wb"
方式打开文件并不能解决这个问题。)
有没有办法说“忽略此范围内所有字符串的编码错误”?
最佳答案
您不能重新定义内置类型的方法,也不能将 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"
行为。请注意,这将是一个全局更改,会影响您导入的所有模块。
我不推荐这两种方式。真正的解决办法是让你的编码正确。 (我很清楚这并不总是可行的。)
关于python - 我可以将 decode(errors ="ignore") 设置为 Python 2.7 程序中所有字符串的默认值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537356/