2017-04-26 7 views
1

read_csv()はカンマ(,)をセパレータとして使用していますが、そのセルの一部にはカンマが含まれているファイルがあります。read_csvはセパレータとしてを読み取ります

このファイルの作者では、このコンマが区切り文字ではないことを示すためにバックスラッシュカンマ(\,)が使用されています。

しかし、ファイルをread_csv()と読むと、すべてのカンマが区切り文字として認識されます。ここではサンプル行は、csvファイルである:

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

私はラインでCSVファイルの行を読んで、余分なコンマとバックスラッシュコンマを削除してn列がなければならないことを知っています。

しかし、より良い方法があるはずです。

+3

を持っていますか?これを処理する通常の方法は、数値でない要素を引用符で囲むことです(例: '' StuckPixel、 '')。それで 'csv'モジュールは文字列の一部としてカンマを正しく扱います。 – L3viathan

+0

@ L3viathanいいえ、私はしていません。あなたが言ったようにstackoverflow上のほとんどの答えは、引用符を追加することを示唆していますが、私のケースでは不可能です。 – MehrdadSComputer

答えて

6

あなたはescapechar optionと、エスケープ文字としてバックスラッシュを設定する必要があります。

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

デモ:あなたは、この「CSV」ファイルの作成に影響を

>>> 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

それは私が欲しいものです。それは100万を超える記録を正しく処理しました。 – MehrdadSComputer

関連する問題