繁体   English   中英

Python将文件读取为unicode字符串

[英]Python reading a file into unicode strings

我在理解Python中处理unicode字符串的正确方法时遇到了一些麻烦。 我已经阅读了很多有关此问题的信息,但仍不清楚应该如何避免读写文件时出现问题。

我的目标是逐行有效地读取一些巨大的文件(最大7GB)。 with open(filename) as f:进行了简单的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 (它是Python 3中所有I / O的基础,并已反向移植到Python 2),它更加健壮和通用。

io.open()函数也会errors

import io

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM