Python将文件读取为unicode字符串



我在理解Python中处理unicode字符串的正确方法时遇到了一些问题。我读过很多关于它的问题,但仍然不清楚在阅读和编写文件时应该做些什么来避免问题。

我的目标是逐行高效地读取一些巨大(高达7GB)的文件。我用简单的with open(filename) as f:做这件事,但最终在ASCII解码中出现了一个错误。

然后我读到正确的方法是写:

with codecs.open(filename, 'r', encoding='utf-8') as logfile:

然而,这最终导致:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x88 in position 13: invalid start byte

坦率地说,我不明白为什么会提出这个例外。

我找到了一个可行的解决方案:

with open(filename) as f:
    for line in logfile:
        line = unicode(line, errors='ignore')

但这种方法最终却非常缓慢。因此,我的问题是:

有正确的方法吗?最快的方法是什么?感谢

您的数据可能不是UTF-8编码的。找出正确的编码并使用它。我们无法告诉您什么编解码器是正确的,因为我们看不到您的数据。

如果必须指定错误处理程序,那么在打开文件时也可以这样做。使用io.open()功能;codecs是一个较旧的库,并且存在一些问题,即io(它支撑着Python3中的所有I/O,并被后移植到Python2)要健壮得多,用途也要广泛得多。

io.open()函数也采用errors

import io
with io.open(filename, 'r', encoding='utf-8', errors='replace') as logfile:

我选择replace作为错误处理程序,这样您至少可以为任何无法解码的内容提供占位符字符。

相关内容

  • 没有找到相关文章

最新更新