Python UFT-8解码csv文件问题,无法创建文件

Python UFT-8解码csv文件问题,无法创建文件,python,csv,pandas,encoding,utf-8,Python,Csv,Pandas,Encoding,Utf 8,我很抱歉,如果这看起来像一个重复的帖子,但我花了2个小时搜索stackoverflow,还没有找到解决方案 我正在将一个csv文件加载到pandas中,并使用一些列作为我的数据帧。问题是其中一列的名称中有一个度符号 如果我手动从csv中删除“”,我可以毫无问题地加载到pandas中。然而,我将有数百个这样的文件要处理,所以手动删除听起来并不有趣 这是我收到的错误: UnicodeDecodeError:“utf-8”编解码器无法解码位置6中的字节0xb0:无效的开始字节 # coding: ut

我很抱歉,如果这看起来像一个重复的帖子,但我花了2个小时搜索stackoverflow,还没有找到解决方案

我正在将一个csv文件加载到pandas中,并使用一些列作为我的数据帧。问题是其中一列的名称中有一个度符号

如果我手动从csv中删除“”,我可以毫无问题地加载到pandas中。然而,我将有数百个这样的文件要处理,所以手动删除听起来并不有趣

这是我收到的错误:

UnicodeDecodeError:“utf-8”编解码器无法解码位置6中的字节0xb0:无效的开始字节

# coding: utf-8
import googlemaps
import folium
import pandas as pd
import re

 df = pd.read_csv('{}{}{}'.format(path, filename, '.csv', encoding='utf-8',errors="ignore")) 
                   .rename(columns={'GPS_x[°]': 'lng', 'GPS_y[°]': 'lat',
                   'ELEVATION_FT[Ft]': 'ele_ft'})
我尝试将其编码为latin1/iso-8859-1,但没有成功。我使用Pycharm作为我的IDE,默认的文件编码是UTF-8

我还尝试过在notepad++中打开csv文件,将其编码为UTP-8并保存一个新文件,但仍然会遇到相同的错误。我不知道该怎么办

编辑1:回溯最近的通话上次:

File     "myfile.py", line 18, in <module>
df = pd.read_csv('{}{}{}'.format(path, filename, '.csv', errors="ignore")).rename(columns={'GPS_x[°]': 'lng', 'GPS_y[°]': 'lat', 'ELEVATION_FT[Ft]': 'ele_ft'})

File "C:\Users\name\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 645, in parser_f
return _read(filepath_or_buffer, kwds)

File "C:\Users\name\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 388, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)

 File "C:\Users\name\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 729, in __init__
self._make_engine(self.engine)

File "C:\Users\name\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 922, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)

File "C:\Users\name\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 1389, in __init__
self._reader = _parser.TextReader(src, **kwds)

File "pandas\parser.pyx", line 535, in pandas.parser.TextReader.__cinit__ (pandas\parser.c:6077)

File "pandas\parser.pyx", line 738, in pandas.parser.TextReader._get_header (pandas\parser.c:9215)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 11: invalid start byte

这个代码对我有用:

df = pd.read_csv('your.csv',encoding ="latin1")

你有几个打字错误。您正在将encoding=传递到format,而不是read_csv,这随后被忽略

错误在这里也是错误的,因为read_csv不支持它

由于notepad++将您的编码报告为ANSI,因此您应该使用mbcs作为编解码器。ANSI表示您所在地区的8位字符集,如为西欧配置的windows-1252。Python中的mbcs使用相同的区域设置进行解码/编码

df = pd.read_csv('{}{}{}'.format(path, filename, '.csv'), encoding='mbcs').rename(columns={'GPS_x[°]': 'lng', 'GPS_y[°]': 'lat', 'ELEVATION_FT[Ft]': 'ele_ft'})
为了使其更易于阅读(这可能有助于您更快地发现问题),您应该执行以下操作:

fq_filename = '{}{}{}'.format(path, filename, '.csv')
df = pd.read_csv(fq_filename, encoding='mbcs')
df = df.rename(columns={'GPS_x[°]': 'lng', 'GPS_y[°]': 'lat', 'ELEVATION_FT[Ft]': 'ele_ft'})

尝试编码='cp1252'谢谢您帮助瓦伊沙利。不幸的是cp1252不起作用。嗨,阿利斯泰尔。为了继续开发应用程序,我从CSV文件的副本中删除了学位字符。一旦我写完它,我试图导入原始csv和tact中的学位字符,以便最后解决这个问题。IDE被设置为UTF-8,并且在下面的一角也有同样的说明。我也尝试过编码:utf-8和latin1,正如其他帖子推荐的那样。我现在尝试使用notepad++将csv编码为utf-8,然后再次运行脚本。这次成功了。但是我无法手动重新编码每个csv文件,所以我被卡住了。啊,根据文档,errors=不是读取\u csv的有效参数。不变的是,记事本++认为您的CSV文件是什么编码?它只是说ANSIFantastic-这意味着它使用的是当前的Windows区域设置,而不是utf-8。在您的代码中,消除错误-它不会做任何事情。现在,设置encoding=mbcs。这使得Python也可以使用Windows区域。请注意,这只适用于Windows,因此如果您将此代码移动到另一个平台,您将不得不使用更好的解决方案。我尝试编码mbcs以及Python 3文档中列出的别名ansi/dbcs。仍然收到相同的错误。我觉得在这一点上,只需编写一个脚本,从每个csv中删除°。谢谢你的帮忙!