def csv_split() :
raw = [
'"1,2,3" , "4,5,6" , "456,789"',
'"text":"a,b,c,d", "gate":"456,789"'
]
cr = csv.reader( raw, skipinitialspace=True )
for l in cr :
print len( l ), l
この関数は以下を出力します。
3 ['1,2,3 ', '4,5,6 ', '456,789']
6 ['text:"a', 'b', 'c', 'd"', 'gate:"456', '789"']
ご覧のとおり、最初の行は正しく 3 つのエントリに分割されています。しかし、2行目はそうではありません。csv リーダーがそれを 2 つに分割すると予想されますが、ここでは 6 つになっています。正規表現のアプローチについても考えましたが、特定の引用方言を想定しています。
基本的に私が欲しいのは、「」のペアで引用されていない「、」があるときはいつでも文字列を分割することです。
これを行うための迅速かつ一般的な方法はありますか?すべてのフィールドが常に引用されていることなどを前提とする正規表現のハックを見てきました。これを非常に非効率的に行う小さなループを書くことができると思いますが、より専門的なアドバイスをいただければ幸いです。どうもありがとう!