在Python中连接两个csv文件
我想将两个csv文件合并为一个,如下所示:在Python中连接两个csv文件,python,csv,merge,Python,Csv,Merge,我想将两个csv文件合并为一个,如下所示: **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 所以输出应该是这样的: **file 1:** feb,55,1.23,..,..,0 mar,65,2.33,..,..,1 **file 2:** feb,5
**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
所以输出应该是这样的:
**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
我的以下代码段不起作用:
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)
你能帮忙吗
谢谢 这对我很有用:
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
以下是我正在使用的代码:
#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
也许这有帮助:如果我理解正确的话,在一个例子中,你有“1.23”,而在另一个例子中,你有“2”和“33”在同一个地方,我认为这是不知道什么时候发生的。有没有可能“2”,“33”实际上是“2.33”啊,我很抱歉,它是2.33这是一个错误还是一个问题:-)它给了我索引器:字符串索引range@Doublexo,对我来说很好。你确定你没有更改任何代码吗?这正是我写的:用open('log1.csv','r')作为fl1:f1=[I.split(',')作为fl1.read().split('\n')]作为fl2的open('log2.csv','r'):f2=[I.split(',')]作为fl2.read().split('\n')]j=[a如果b是None或b==len(b)*b[0]其他b是a,b是在map中(None,x,y是x,y是在zip中)(f1,f2)]对于j中的k:对于k中的l:打印lprint@Doublexo,您是否注意到您的文本文件中的错误,我已在我的回答中显示。此外,您是否将上面的两个文件名替换为相应的文件名?