2016-11-28 46 views
1

我目前正在嘗試通過刪除不重要的數據來減小大小的列表。我目前正在使用試圖閱讀python中的一個非常大的文本列表

with open("list.txt") as f_line: 
    for line in f_line: 
     Doing_things() 

它目前正在使用較小規模的文件,但是當使用較大的主文件時,它會給出以下錯誤。

的UnicodeDecodeError:「ASCII」編解碼器不能在3656位置解碼字節0xe2:在範圍序數不(128)

有另一種方式來讀取列表爲蟒蛇。該文件還有超過10000個單個數據點用於列表。 感謝您的幫助。

+5

文件的大小提到here你可以指定它是沒有問題的。問題是,你打開文件就好像它包含ASCII文本,而不是。 – Matthias

+0

我不認爲問題出在文件大小上。我使用這種方法的文件大小爲30 GB +沒有小故障。這些文件本身可能存在問題。 –

+1

首先「大」是一個相對術語。 10000不是一個重要的數字。從你移植的東西看來,它與文件大小或內存無關,而是與編碼有關。您應該先將這些行轉換爲utf-8。 –

回答

1

原因可能是對文件編碼的「誤解」。你的python解釋器需要一個ascii編碼的文本文件,但實際上它被編碼爲unicode或latin1。如果它包含重音字符,它肯定不是ASCII文件。

你使用哪個版本的python? Python 2對待文本的方式不同於Python 3.

我通常使用notepad ++來檢查文本文件中使用的編碼是否不清楚。

一旦你知道哪些編碼被用作這樣with open('list.txt', encoding='utf-8') as f_line:

+0

感謝它的工作:)我使用的是Python 3,我認爲它在處理文件中的emojis時感到困惑。 –