我正在尝试读取文件并将字符串转换为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
字符,那么如何删除它们呢?
答案 0 :(得分:5)
删除.decode('utf8')
电话。您的文件数据已经已被解码,因为在Python 3中,open()
调用文本模式(默认值)返回了一个文件对象,它将数据解码为Unicode字符串为您< / em>的
你可能做想要将编码添加到open()
调用中以使其显式化。否则Python使用系统默认值,可能不是UTF-8:
file_str = open(file_path, 'r', encoding='utf8').read()
例如,在Windows上,默认编解码器几乎肯定会出现UTF-8数据错误,但在尝试阅读文本之前,您不会看到问题。你发现你有一个Mojibake因为UTF-8数据是用CP1252或类似的8位编解码器解码的。
有关详细信息,请参阅open()
function documentation。
答案 1 :(得分:0)
如果您使用
file_str = open(file_path, 'r', encoding='utf8', errors='ignore').read()
,则基本上将忽略非UTF-8字符。有关详细信息,请阅读open()
function documentation。文档中有一节介绍errors
参数的可能值。