文件名有重音符时,pandas.read_csv的编码问题
我正在尝试用pandas加载一个CSV文件,但如果文件名里有重音符号,就会遇到问题。这显然是编码的问题。虽然read_csv
可以让你设置文件内部文本的编码,但我搞不清楚怎么正确编码文件名。
input_file = r'C:\...\Datasets\%s\Provinces\Points\%s.csv' % (country, province)
self.locs = pandas.read_csv(input_file,sep=',',skipinitialspace=True)
这个CSV文件的名字是Anzoátegui.csv。当我遇到错误时,
input_file = 'C:\\...\Datasets\Venezuela\Provinces\Points\Anzoátegui.csv
错误代码:
OSError: File b'C:\\PF2\\QGIS Valmiera\\Datasets\\Venezuela\\Provinces\\Points\\Anzo\xc3\xa1tegui.csv' does not exist
所以可能是把我的字符串转换成了字节?我也试过用io.StringIO(input_file)
,这会把正确的文件名作为列标题放在一个空的DataFrame
里:
Empty DataFrame
Columns: [C:\PF2\QGIS Valmiera\Datasets\Venezuela\Provinces\Points\Anzoátegui.csv]
Index: []
有没有什么办法可以加载这个文件?不幸的是,我不能简单地去掉重音符号,因为我需要和一些要求使用正确名称的软件对接,而且我还有很多文件需要处理(不仅仅是这个)。谢谢!
编辑:完整错误信息
Traceback (most recent call last):
File "C:\PF2\eclipse-standard-kepler-SR2-win32-x86_64\eclipse\plugins\org.python.pydev_3.3.3.201401272249\pysrc\pydevd_comm.py", line 891, in doIt
result = pydevd_vars.evaluateExpression(self.thread_id, self.frame_id, self.expression, self.doExec)
File "C:\PF2\eclipse-standard-kepler-SR2-win32-x86_64\eclipse\plugins\org.python.pydev_3.3.3.201401272249\pysrc\pydevd_vars.py", line 486, in evaluateExpression
result = eval(compiled, updated_globals, frame.f_locals)
File "<string>", line 1, in <module>
File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 404, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 205, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 486, in __init__
self._make_engine(self.engine)
File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 594, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 952, in __init__
self._reader = _parser.TextReader(src, **kwds)
File "parser.pyx", line 330, in pandas.parser.TextReader.__cinit__ (pandas\parser.c:3040)
File "parser.pyx", line 557, in pandas.parser.TextReader._setup_parser_source (pandas\parser.c:5387)
OSError: File b'C:\\PF2\\QGIS Valmiera\\Datasets\\Venezuela\\Provinces\\Points\\Anzo\xc3\xa1tegui.csv' does not exist
1 个回答
3
大家好,我在处理依赖关系的时候遇到了一些麻烦,不过后来发现这个问题在pandas 0.14.0版本中已经解决了。安装这个更新版本后,带有重音符号的文件就能正确导入了。
谢谢大家的反馈!