2013-07-29 44 views
1

我正在使用Python解析csv文件。csv中的Python嵌套逗號

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()分成四個值?

謝謝。

+0

創建CSV文件正確或者與csv模塊或excel或開放式辦公室...如果你這樣做,csv經理將正確地轉義嵌套逗號 –

+1

那麼你想如何解釋它?儘管可能不方便,但你可以自己寫一些東西並使用split()。這就是我要做的,如果沒有什麼可以做的正確格式化csv文件。 –

+3

您的CSV文件*格式錯誤*格式錯誤。將'quot3'加上引號使其成爲有效的CSV值。 –

回答

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

+0

感謝您的詳細回覆。我最終使用了類似的東西。值3是一個公知的字符串,所以我能夠檢查該和然後使用列表[:n]和列表[N:],得到所需的輸出。再次感謝! – Matt

+0

不用擔心男人,這就是爲什麼:) –