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

3 投票
2 回答
1665 浏览
提问于 2025-04-17 20:48

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

文件1:

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

你可以试试这个

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

然后再试试这个

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

你只需要对每一行使用 strip 方法。把这一行:

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

改成这样:

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

这里发生的事情是,你读取的每一行末尾都有一个换行符(\n)。当你打印这些内容时,这个换行符也会被输出。使用 strip 方法可以在输出之前把这个换行符去掉。

撰写回答