2017-04-26 78 views
1

我知道read_csv()使用逗号(,)作为分隔符,但我有一个文件,其中的一些单元格在其内容中有逗号。read_csv reads ,作为分隔符

在该文件中,作者使用了反斜杠逗号(\,)来表明该逗号不是分隔符。

但是当我用read_csv()读取文件时,它将所有逗号视为分隔符。下面是CSV文件样本行:

346882588,206801833,1049600263,Dzianis Dzenisiuk,5,StuckPixel\, Inc.,Feb 11\, 2010,2,3,1265846400 

我知道,应该有n列,所以我逐行读取CSV文件行,删除多余的逗号和反斜杠逗号。

但应该有更好的办法。

+3

你对创造这个“CSV”文件的任何影响?处理这种情况的正常方法是将非数字元素放在引号中,即“StuckPixel”。然后'csv'模块将正确处理逗号作为字符串的一部分。 – L3viathan

+0

@ L3viathan不,我没有。正如你所说的大多数在stackoverflow上的答案建议添加引号,但在我的情况下不可能。 – MehrdadSComputer

回答

6

您需要配置反斜线作为转义字符,与escapechar option

pandas.read_csv(fileobj_or_filename, escapechar='\\') 

演示:

>>> import pandas, csv 
>>> from io import StringIO 
>>> f = StringIO(r'''346882588,206801833,1049600263,Dzianis Dzenisiuk,5,StuckPixel\, Inc.,Feb 11\, 2010,2,3,1265846400 
... ''') 
>>> df = pandas.read_csv(f, names='abcdefghij', escapechar='\\') 
>>> df['f'] 
0 StuckPixel, Inc. 
Name: f, dtype: object 
>>> df['g'] 
0 Feb 11, 2010 
Name: g, dtype: object 
+0

这正是我想要的。它正确地工作了超过一百万条记录。 – MehrdadSComputer

相关问题