将来自两个不同文本文件的数据合并为一行(Python)

时间:2014-03-04 16:37:44

标签: python join text-files lines

我有两个逗号分隔的文本文件,其内容如下:

File1中:

  

TR,23456.23,H,56789

     

TR,54678.13,F,14567

     

TR,67889.12,R,89876

文件2:

  

SG,6789.24,J,53452

     

SG,8909.25,F,56789

     

SG,5467.11,S,56783

我想从第一个和第二个文件中提取句子,然后将它们组合成一个新的文本文件,如下所示:

  

TR,54678.13,F,14567,SG,8909.25,F,56789

但是,在我的代码中,获得的结果如下:

  

TR,54678.13,F,14567

     

,SG,8909.25,F,56789

为什么第二个文件中的句子写在第一个文件的句子下面?我需要将两个句子组合在一起。有谁知道为什么会这样?我怎么能解决这个问题?

这是我的代码:

contfil=0
direct=os.listdir(path1)
for file in direct:
  with open(os.path.join(save_path1,file),'r') as Textfile1:
    for eachline1 in Textfile1:
       for field in eachline1.split():
           ID1=field.split(',') [2]
           with open(os.path.join(save_path2,os.listdir(save_path2) [contfil]),'r') as Textfile2:
               for eachline2 in Textfile2:
                   for field in eachline2.split():
                        ID2=field.split(',') [2]
                        if ID2==ID1:
                           fo=open(os.path.join(save_path3,'Matched_Lines.txt'),'a')
                           fo.write('%s,%s\n' %(eachline1,eachline2))
                           fo.close()
  contfil+=1

2 个答案:

答案 0 :(得分:2)

您需要做的就是每行strip。改变这一行:

fo.write('%s,%s\n' %(eachline1,eachline2))

到此:

fo.write('%s,%s\n' %(eachline1.strip(),eachline2.strip()))

发生的事情是,您读到的每一行最后都有换行符(\n)。打印出来时,输出该换行符。 strip在输出之前删除换行符。

答案 1 :(得分:0)

您可能想尝试

combinedline = ' '.join([eachline1, eachline2])

然后

 fo.write('%s\n', % combinedline)