2017-04-26 77 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

相關問題