[英]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.