Skip to main content
 首页 » 编程设计

python之在python中组合来自两个不同文本文件的列

2025年05月04日27kenshinobiy

我正在尝试将两个文本文件组合在一起。第一个文件有两列,第二个文件有 5 列。以下是文件的外观示例:

文件1.txt

333333 1 
423232 1 
244311 2 
333333 2 
and so on... 

文件2.txt

1 4 0 5  32 
3 2 3 32 23 
3 4 4 2  2 
and so on ... 

两个文件的行数相同。我想将 file1.txt 与 file2.txt 结合起来创建一个新的 file3.txt,其形式如下:

文件3.txt

333333 1 1 4 0 5 32 
423232 1 3 2 3 32 23     
244311 2 3 4 4 2  2  
and so on  

我写了这段代码将file1.txt和file2.txt合并在一起。但是,我得到的是一个文件,它在file1.txt的末尾添加了file2.txt的内容,这不是我想要的。我得到这样的东西:

333333 1 
423232 1 
244311 2 
333333 2    
1 4 0 5  32 
3 2 3 32 23 
3 4 4 2  2 

这是我的代码:

filenames =['file1.txt','file2.txt'] 
with open('file3.txt', 'w') as outfile: 
     for x in filenames: 
         with open(x) as infile: 
              for line in infile: 
                  outfile.write(line) 

如何修正这段代码,以便得到一个类似 file3.txt 的文件,即将 file2.txt 的行添加到 file1.txt 的相应行?任何建议/帮助将不胜感激。谢谢!

请您参考如下方法:

你可以试试这个:

在 Python 3 中:

with open('file3.txt', 'w') as file3: 
    with open('file1.txt', 'r') as file1: 
        with open('file2.txt', 'r') as file2: 
            for line1, line2 in zip(file1, file2): 
                print(line1.strip(), line2.strip(), file=file3) 

如果要处理多个文件,可以将代码概括为:

filenames = ['file1.txt', 'file2.txt', ...] 
with open('output.txt', 'w') as writer: 
    readers = [open(filename) for filename in filenames] 
    for lines in zip(*readers): 
        print(' '.join([line.strip() for line in lines]), file=writer) 

在 Python 2 中:

with open('file3.txt', 'w') as file3: 
    with open('file1.txt', 'r') as file1: 
        with open('file2.txt', 'r') as file2: 
            for line1, line2 in zip(file1, file2): 
                print >>file3, line1.strip(), line2.strip() 

希望对您有所帮助!