2017-08-01 270 views
0

我想使用pd.read_csv讀取csv文件。我遇到了編碼問題,我不知道如何繼續。我遇到的第一個問題是在讀取包含μ字符的csv fiels時導致的以下錯誤消息。 「SyntaxError:第4行文件GUI_Simpilify.py中以'\ xb5'開頭的非UTF-8代碼,但未聲明編碼;有關詳細信息,請參閱http://python.org/dev/peps/pep-0263/pd.read_csv不知道如何確定我的csv文件的編碼

我能夠通過手動更改文件名並刪除μ來獲取此錯誤。但是,這不是一個解決方案,因爲我有1000個csv文件來提取數據。

一旦我手動從一個CSV文件中刪除μ,並重新運行我的劇本我收到此錯誤信息: 「的UnicodeDecodeError:‘UTF-8’編解碼器不能在13位解碼字節0xb1:無效的起始字節」

我相信這是因爲我所有的csv文件都包含±和μ字符。 如何處理這些錯誤而無需手動解決方案?

代碼:

import pandas as pd 
    test_csv = pd.read_csv('OFN 0.1pg_L Split 20-1 (5 fg on column).csv') 
+0

嘗試:pd.read_csv(** **ü'OFN 0.1pg_L斯普利特20-1(5 FG上欄).csv格式) –

+0

同時,你有沒有考慮在沒有姓名和循環的目錄中鍵入。看看這裏:https://stackoverflow.com/questions/10377998/how-can-i-iterate-over-files-in-a-given-directory –

+0

csvs從哪裏來?嘗試明確指定編碼,如'pd.read_csv('filename.csv',encoding ='utf8')',而不是'utf8',你可以嘗試'cp1250'或'cp1252'來進行windows-like-encoding ,或''latin1'很常見。參考這裏獲取更完整的列表https://docs.python.org/3/library/codecs.html#standard-encodings –

回答

0

加入這一行我能想出解決辦法。這不是最優秀的解決方案,但它的工作原理。如果任何文件名包含用「_」替換的「μ」字符,我提出了一個方法來查找當前工作目錄中的所有csv文件。返回所有csv文件名稱的列表。我知道這可能會導致命名衝突,但由於我是最終用戶,所以我會小心的。

# -*- coding: Latin-1 -*- 
    import os 
    import pandas as pd 

    filenames = os.listdir(path_to_dir) 
    filenames_fixed = [] 
    for filename in filenames: 

     if filename.endswith(suffix) and 'µ' in filename: 
      new_filename = filename.replace('µ', '_') 
      os.rename(os.path.join(path_to_dir, filename), 
       os.path.join(path_to_dir, new_filename)) 
      filenames_fixed.append(new_filename) 

     elif filename.endswith(suffix): 
      filenames_fixed.append(filename) 

     return filenames_fixed 

    csv_list_cwd = find_csv_filenames_remove_nonASCII(os.getcwd()) 

    for csv_file in csv_list_cwd: 
     df_cwd = pd.read_csv(csv_file, encoding="Latin-1") 
1

由於沒有指定編碼此錯誤。 一開始你的Python腳本

# -*- coding: utf-8 -*- 
+0

我試着在我的代碼的開頭添加建議的行,並沒有什麼區別。我仍然收到相同的錯誤消息。 「UnicodeDecodeError:'utf-8'編解碼器無法解碼位置13中的字節0xb1:無效起始字節」 – kitestring

+0

但是,它確實解決了第一個問題。 Python現在可以處理包含μ字符的文件名。在我有包含這些字符的文件名時出現「SyntaxError:在第4行的文件GUI_Simpilify.py中以'\ xb5'開頭的非UTF-8代碼,但未聲明編碼;請參閱http:// python .org/dev/peps/pep-0263 /瞭解詳情「。 – kitestring

+0

你的文件名是否包含特殊字符? –