Python将文件读入unicode字符串

时间:2016-07-20 18:29:05

标签: python string file 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')

但这种方法结果非常缓慢。 因此我的问题是:

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

1 个答案:

答案 0 :(得分:4)

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

如果必须指定错误处理程序,则在打开文件时也可以这样做。使用io.open() function; codecs是一个较旧的库,有一些问题io(它支持Python 3中的所有I / O并被反向移植到Python 2)更加强大和通用。

io.open()函数也需要errors

import io

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

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