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

将两个不同文本文件中的数据合并到一行中(Python),python,join,text-files,lines,Python,Join,Text Files,Lines,我有两个逗号分隔的文本文件,内容如下: 文件1: TR,23456.23,H,56789 TR,54678.13,F,14567 TR,67889.12,R,89876 文件2: 政府公报,6789.24,J,53452 政府公报,8909.25,F,56789 政府公报,5467.11,南,56783 我想从第一个和第二个文件中提取句子,并将它们合并到一个新的文本文件中,只需一行,如下所示: TR,54678.13,F,14567,SG,8909.25,F,56789 然而,在我的代码中,得到

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

文件1:

TR,23456.23,H,56789

TR,54678.13,F,14567

TR,67889.12,R,89876

文件2:

政府公报,6789.24,J,53452

政府公报,8909.25,F,56789

政府公报,5467.11,南,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

你所需要做的就是剥去每一行。更改此行:

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

fo.write('%s,%s\n' %(eachline1.strip(),eachline2.strip()))
所发生的情况是,您在中阅读的每一行末尾都有一个换行符(
\n
)。当您将它们打印出来时,该换行符即被输出<代码>条带在输出前删除换行符。

您可能想试试

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

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

尝试打印
repr(eachline1)
repr(eachline2)
。看到结尾了吗?python有用于读取这些类型文件的csv模块。join(eachline1,eachline2)产生了什么?
trim
不是python内置的。我想您正在考虑JavaScript的
String.trim()
?python的等价物是
str.strip
str.rstrip
。是的,我几乎立刻意识到了这个错误。已经修好了。最近我使用了太多的语言……我也尝试过这种方法,但我得到了以下错误:“join()只接受一个参数(给定2个)”。这可能对我的案子不起作用?。我已经复制了你上面写的代码。@Sarah谢谢你指出我的打字错误。join将获取列表中的每个条目,并使用前面的字符串将它们连接起来。我忘了方括号了。对不起,没问题。代码中还有一个错误,%前面的逗号。我又尝试了一次,现在它可以工作了,但是我得到了与我的初始代码相同的结果(一行在另一行下面,而不是它们的组合)。