python - 我可以将 decode(errors ="ignore") 设置为 Python 2.7 程序中所有字符串的默认值吗?

标签 python python-2.7 decode

我有一个 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/

相关文章:

python - OpenCV Crop Hough Circles Python无法正常工作

Python:如何将三个文本文件添加到一个变量中,然后将其拆分为一个列表

Python Google App Engine Cron 作业/计划任务不工作

python - 检查 PyObject 是否为 nullptr

python-2.7 - 使用蒙版获取图像的平均值

swift - 如何在 Swift 中解码 NSURL 中的特殊字符?

json - 在结构映射中存储/解码 json 的最佳方式

python - 未知选项 : -B

python - 从 SocketServer.ForkingTCPServer python 释放套接字

php - 使用大型 .JSON 文件 (PHP)