2017-08-01 274 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

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