如何使用python进行txt文件合并?

时间:2017-07-31 15:46:05

标签: python dictionary merge output

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

所以请帮助我。

下面是我的两个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

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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