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