读取文件并尝试删除所有非 UTF-8 字符
read a file and try to remove all non UTF-8 chars
我正在尝试读取文件并将字符串转换为 UTF-8
字符串,以便删除文件字符串中的一些非 utf-8
字符,
file_str = open(file_path, 'r').read()
file_str = file_str.decode('utf-8')
但是我得到了以下错误,
AttributeError: 'str' object has no attribute 'decode'
更新:我尝试了答案建议的代码,
file_str = open(file_path, 'r', encoding='utf-8').read()
但它并没有消除非utf-8
字符,那么如何删除它们呢?
删除 .decode('utf8')
调用。您的文件数据 已经 被解码,因为在 Python 3 中,使用文本模式(默认)的 open()
调用返回了一个将数据解码为 Unicode 的文件对象字符串 给你.
您可能 想要将编码添加到 open()
调用以使其明确。否则 Python 使用系统默认值,这可能不是 UTF-8:
file_str = open(file_path, 'r', encoding='utf8').read()
例如,在 Windows 上,默认编解码器对于 UTF-8 数据几乎肯定是错误的,但是在尝试阅读文本之前您不会发现问题;你会发现你有一个 Mojibake 因为 UTF-8 数据是使用 CP1252 或类似的 8 位编解码器解码的。
有关详细信息,请参阅 open()
function documentation。
如果你使用
file_str = open(file_path, 'r', encoding='utf8', errors='ignore').read()
,那么 non-UTF-8 个字符将被忽略。阅读 open()
function documentation 了解详情。该文档有一节介绍了 errors
参数的可能值。
我正在尝试读取文件并将字符串转换为 UTF-8
字符串,以便删除文件字符串中的一些非 utf-8
字符,
file_str = open(file_path, 'r').read()
file_str = file_str.decode('utf-8')
但是我得到了以下错误,
AttributeError: 'str' object has no attribute 'decode'
更新:我尝试了答案建议的代码,
file_str = open(file_path, 'r', encoding='utf-8').read()
但它并没有消除非utf-8
字符,那么如何删除它们呢?
删除 .decode('utf8')
调用。您的文件数据 已经 被解码,因为在 Python 3 中,使用文本模式(默认)的 open()
调用返回了一个将数据解码为 Unicode 的文件对象字符串 给你.
您可能 想要将编码添加到 open()
调用以使其明确。否则 Python 使用系统默认值,这可能不是 UTF-8:
file_str = open(file_path, 'r', encoding='utf8').read()
例如,在 Windows 上,默认编解码器对于 UTF-8 数据几乎肯定是错误的,但是在尝试阅读文本之前您不会发现问题;你会发现你有一个 Mojibake 因为 UTF-8 数据是使用 CP1252 或类似的 8 位编解码器解码的。
有关详细信息,请参阅 open()
function documentation。
如果你使用
file_str = open(file_path, 'r', encoding='utf8', errors='ignore').read()
,那么 non-UTF-8 个字符将被忽略。阅读 open()
function documentation 了解详情。该文档有一节介绍了 errors
参数的可能值。