Python pd.read\u csv不确定如何确定我的csv文件的编码
我正在尝试使用pd.read\u csv读取csv文件。我遇到了编码问题,我不知道如何继续。我遇到的第一个问题是在读取包含µ字符的csv文件时出现以下错误消息 SyntaxError:第4行文件GUI_Simpilify.py中以“\xb5”开头的非UTF-8代码,但未声明编码;有关详细信息,请参阅 我可以通过手动更改文件名并删除µ来克服此错误。但是,这不是一个解决方案,因为我有1000个csv文件要从中提取数据 手动从单个csv文件中删除µ并重新运行脚本后,我会收到以下错误消息: “UnicodeDecodeError:'utf-8'编解码器无法解码位置13中的字节0xb1:无效的开始字节” 我相信这是因为我所有的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
此错误是由于未指定编码而导致的。 在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")