Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pd.read\u csv不确定如何确定我的csv文件的编码_Python_Python 3.x_Pandas_Encoding - Fatal编程技术网

Python pd.read\u csv不确定如何确定我的csv文件的编码

Python pd.read\u csv不确定如何确定我的csv文件的编码,python,python-3.x,pandas,encoding,Python,Python 3.x,Pandas,Encoding,我正在尝试使用pd.read\u csv读取csv文件。我遇到了编码问题,我不知道如何继续。我遇到的第一个问题是在读取包含µ字符的csv文件时出现以下错误消息 SyntaxError:第4行文件GUI_Simpilify.py中以“\xb5”开头的非UTF-8代码,但未声明编码;有关详细信息,请参阅 我可以通过手动更改文件名并删除µ来克服此错误。但是,这不是一个解决方案,因为我有1000个csv文件要从中提取数据 手动从单个csv文件中删除µ并重新运行脚本后,我会收到以下错误消息: “Unico

我正在尝试使用pd.read\u csv读取csv文件。我遇到了编码问题,我不知道如何继续。我遇到的第一个问题是在读取包含µ字符的csv文件时出现以下错误消息

SyntaxError:第4行文件GUI_Simpilify.py中以“\xb5”开头的非UTF-8代码,但未声明编码;有关详细信息,请参阅

我可以通过手动更改文件名并删除µ来克服此错误。但是,这不是一个解决方案,因为我有1000个csv文件要从中提取数据

手动从单个csv文件中删除µ并重新运行脚本后,我会收到以下错误消息: “UnicodeDecodeError:'utf-8'编解码器无法解码位置13中的字节0xb1:无效的开始字节”

我相信这是因为我所有的csv文件都包含±和µ字符。 如果没有手动解决方案,我如何处理这两个错误

代码:


此错误是由于未指定编码而导致的。 在python脚本的开头添加这一行

# -*- coding: utf-8 -*-

我能弄明白这一点。这不是最有效的解决方案,但它确实有效。我提出了一种方法,如果任何文件名包含“µ”字符,则查找当前工作目录中的所有csv文件,并将其替换为“\ux”。返回所有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")

我试着在代码的开头添加建议的行,结果没有什么不同。我仍然收到相同的错误消息。“UnicodeDecodeError:'utf-8'编解码器无法解码位置13:无效起始字节中的字节0xb1”但是,它确实解决了第一个问题。Python现在可以处理包含µ字符的文件名。在我得到这个错误之前,当我的文件名包含这样的字符时,“SyntaxError:Non-UTF-8代码在文件GUI_Simpilify.py的第4行以“\xb5”开头,但没有声明编码;有关详细信息,请参阅”。您的文件名是否包含特殊字符?sys.setdefaultencoding('UTF8'))你能试试这个吗?我正在使用Python3,所以我得到了这个错误:“AttributeError:module'sys'没有属性'setdefaultencoding'”try:pd.read_csv(u'of n 0.1pg_L Split 20-1(列上5 fg).csv')。另外,你是否考虑过不键入名称并循环目录。看这里:CSV来自哪里?尝试像这样显式指定编码
pd.read_csv('filename.csv',encoding='utf8')
,而不是
utf8
,您可以尝试
cp1250
,或者
cp1252
进行类似windows的编码,或者
'latin1
非常常见。有关csv文件的更完整列表,请参阅此处。csv文件是从一个名为Time of Filght质谱仪的化学分析仪导出的。由于许多化学名称包含希腊字符和值的范围,因此我必须处理字符,例如±和µ。我可以使用“latin-1”读取该文件,但只能在手动从文件名中删除µ后读取。最初我尝试循环目录,因为我有1000个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")