使用Python整合两个文本文件

时间:2011-04-22 20:30:26

标签: python iteration text-processing text-parsing

我试图迭代两个不同的文本文件,并根据两个文件中每行开头找到的帐号创建一个合并文件。我首先阅读包含语句数据的主文件并读取每一行,直到找到与前一行不匹配的帐号,然后我开始迭代第二个文件并尝试将任何匹配的帐号与之前的匹配阻止文件1.我遇到这个部分时遇到了麻烦。

一些样本数据将是:

File1 .... File2
000990 000990是我的合作伙伴 000990 000990是我的合作伙伴 000760 000530是我的合作伙伴
000760 000530是我的合作伙伴
000530 000999是我的合作伙伴 000530 000999是我的合作伙伴 000999

期望的输出
000990
000990
000990是我的合作伙伴 000990是我的合作伙伴 000760
000760
000553
000553
000530是我的合作伙伴 000530是我的合作伙伴 000999
000999是我的合作伙伴 000999是我的合作伙伴

这是我到目前为止尝试过的代码。任何帮助或建议将不胜感激。 感谢

x=open('testaccount.txt')
y=open('accountpartner.txt')
count=1
inv_count=1
for line in x:
    if count==1:
        a=x.readline()
        print('S'+line, end='')
    if line[0:6]==a[0:6]:
        print('S'+line, end='')
    elif line[0:6]!=a[0:6]:
        for inv_line in y:
            if inv_count==1:
                b=y.readline()
                if b[0:6]==a[0:6]:
                    print('I',b,end='')
        inv_count+=1
        print('break')
        print('S'+line,end='')
        a=line
        count=1
        continue
    count+=1
print('this is a',a)

1 个答案:

答案 0 :(得分:1)

使用词典。编写自己的排序合并要简单得多。

with open('accountpartner.txt') as aFile:
    lookup = {}
    for line in aFile:
        lookup[line[:6]]= line

def make_groups( source ):
    group = []
    key= None
    for line in source:
        if line[:6] != key:
            if group: yield key, group
            group= []
            key= line[:6]
        group.append( line )
    if group: yield key, group

with open('testaccount.txt') as main:
    for key, group in make_groups( main ):
        if key in lookup:
            print key, group, lookup
        else:
            print key, group, None