2014-04-17 24 views
0

2個CSV文件,我想將兩個CSV文件導入到一個這樣的:加入在Python

**file 1:** 
feb,55,1.23,..,..,0 
mar,65,2.33,..,..,1 

**file 2:** 
feb,55,..,12,KL,.. 
mar,65,..,10,MN,.. 

所以輸出會是這樣的:

feb,55,1.23,12,KL,0 
mar,65,2.33,10,MN,1 

我下面的代碼片段沒有按」 t works:

f1=[li.split(',') for li in open("file1.csv","r+")] 
f2=[lj.split('\t') for lj in open("file2.csv","r+")] 

def joinL(x,y): 
    list=[] 
    for n in x: 
     for m in y: 
      if n[0]==m[0]: 
       list.append(m) 
    return list 

print joinL(f1,f2) 

您能否請幫助 謝謝!

+0

也許這幫助:http://stackoverflow.com/questions/16265831/merge-2-csv-files –

+0

如果我在一種情況下正確理解你有「1.23」並且在另一個「2」和「33」在融合後的同一個地方,我假設不知道什麼時候發生這種情況。是否有機會,「2」,「33」實際上是「2.33」 – Ivaylo

+0

Yeaaah,我很抱歉,它是2.33 – Oxygenex

回答

1

這個工作對我來說:

with open('filename1', 'r') as fl1: 
    f1 = [i.split(',') for i in fl1.read().split('\n')] 

with open('filename2', 'r') as fl2: 
    f2 = [i.split(',') for i in fl2.read().split('\n')] 

f3 = [[a if b is None or b==len(b)*b[0] else b for a,b in map(None,x,y)] for x,y in zip(f1,f2)] 

for i in f3: 
    for j in i: 
     print j, 
    print 

[OUTPUT] 
feb,55,1.23,12,KL,0 
mar,65,2.33,10,MN,1 

注意,你在你的文字有一個小的失誤。它應該是2.33而不是2,33

這裏是EXACTLY我使用的代碼:

#my_script.py 
with open('t1.txt', 'r') as fl1: 
    f1 = [i.split(',') for i in fl1.read().split('\n')] 

with open('t2.txt', 'r') as fl2: 
    f2 = [i.split(',') for i in fl2.read().split('\n')] 

f3 = [[a if b is None or b==len(b)*b[0] else b for a,b in map(None,x,y)] for x,y in zip(f1,f2)] 

for i in f3: 
    for j in i: 
     print j, 
    print 

#t1.txt 
feb,55,1.23,..,..,0 
mar,65,2.33,..,..,1 

#t2.txt 
feb,55,..,12,KL,.. 
mar,65,..,10,MN,.. 
+0

這是一個錯誤仍然是一個問題:-) – Ivaylo

+0

它給了我 IndexError:字符串索引超出範圍 – Oxygenex

+0

@Doublexo,它適用於我。你確定你沒有更改任何代碼嗎? – sshashank124