2017-07-31 63 views
0

我有两个txt文件。我想用python合并这些文件。 我刚开始学习python,需要一些帮助。我试图搜索谷歌解决这个问题,但我找不到解决方案。如何使用python txt文件合并?

所以请帮助我。

下面是我的两个txt文件。

a.txt有此数据。

Zone,alias1,alias2 
PA1_H1,PA1,H1 
PA2_H2,PA2,H2 

b.txt有此数据。

WWN,Port,Aliases 
da,0,PA1 
dq,1,PA2 
d2,3,H1 
d4,1,H2 

期望输出

Zone,alias1,WWN,Port,alias2,WWN,Port 
PA1_H1,PA1,da,0,H1,d2,3 
PA2_H2,PA2,dq,1,H2,d4,1 

我想下面的脚本,但我不能合并。

row = [] 
for line in open("mod_alias.txt"): 
     line = line.split(',')[2] 
     row.append(line) 

strings = row 

for line in open("mod_all_cfgshow.txt"): 
     if any(s in line for s in strings): 
       field1,field2,field3 = line.split(',') 
       print field1,field2,field3 

如何合并文件? 你能告诉我一个例子吗?

+1

合并的标准是什么?基于哪一列? –

回答

0

这应该让你开始

import csv 

# read all the data in b.txt into a dictionary, key'd by the alias. We'll look this up later 
data = {} 
with open("b.txt") as infile: 
    for row in csv.DictReader(infile): 
     alias = row["Aliases"] 
     data[alias] = row 

with open("a.txt") as fin, open("output.txt", 'w') as fout: 
    infile = csv.DictReader(fin) 
    outfile = csv.DictWriter(headers=infile.headers+data.keys()) 
    for row in infile: 
     row.update(data[row["Aliases"]]) # update the row with the data from b.txt 
     outfile.writerow(row) 
+0

非常感谢。但是你的脚本有错误。 'Traceback(last recent call last): 文件“test7.py”,第12行,在 outfile = csv.DictWriter(headers = infile.headers + data.keys()) AttributeError:DictReader实例没有属性'标题' ' – KJ9

0

下面是一些代码,让你开始。此代码将向您展示如何打开这两个文件并将其合并。然后,您需要做的就是修改代码,以使用您希望的任何特定规则合并文件。

# Open Files, read data to lists, and strip data 

    with open("b.txt") as bFile: 
      bContent = bFile.readlines() 
      bContent = [line.strip() for line in bContent] 


    with open('a.txt') as aFile: 
      aContent = aFile.readlines() 
      aContent = [line.strip() for line in aContent] 

    # Create a file to store the merged text 

    m = open('merged.txt','w') 

    # Cycle through the text read from files and merge, and then print to file 
    for aLine, bLine in zip(aContent, bContent): 

      mergedString = aLine+','+bLine 
      print>>m,mergedString 
相关问题