1

Pythonを使用してcsvファイルを解析しています。

CSV ファイルは次のようになります。

value1,value2,value3(a,b,c)

Python コード:

with open(file_path, 'rb') as this_file:
  reader = csv.reader(this_file, delimiter=',')
  for row in reader:
    print row

明らかに、CSV リーダーはこれを次のように解釈します。

"value1","value2","value3(","a","b","c)"

Python が value2() を 4 つの値に分割するのを止める最善の方法は何ですか?

ありがとう。

4

2 に答える 2

1

与えられた例を扱うコードは次のとおりです。

a='value1, value2, value3(a, b, c)'
split=a.split(', ')
result=[]
for ent in split:
    if ent.find('(', 0, len(ent))!=-1:
        temp=''
        for ent2 in split[split.index(ent):]:
            if ent2.find('(', 0, len(ent))!=-1:
                temp=temp+ent2
            else:
                temp=temp+','+ent2
                split.remove(ent2)
            #May need a check whether ) has not been reached yet, in which case don't add the items.
        result.append(temp)
    else:
        result.append(ent)

(コメントに示されているように)括弧で囲まれたものの後にいくつかの「通常の」エントリが存在するかどうか、いくつかの小さなチェックが必要になります。

a='value1, value2, value3(a, b, c)', 'value4'

お役に立てれば。申し訳ありませんが、実際にはファイルが「適切な」csvではないため、組み込みのcsvパーサーを使用する方法は考えられません...

于 2013-07-29T21:56:11.190 に答える
1

値内のコンマから抜け出す簡単な方法はありません。それについていくつかの質問があり、多くの人がこの投稿を指摘しました: https://stackoverflow.com/a/769713/2620328

于 2013-07-29T21:30:46.770 に答える