簡體   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