Консолидация двух текстовых файлов с помощью Python - PullRequest
0 голосов
/ 23 апреля 2011

Я пытаюсь перебрать два разных текстовых файла и создать один консолидированный файл на основе номера счета, найденного в начале каждой строки в обоих файлах. Я начинаю с чтения основного файла, который содержит данные выписки, и читаю каждую строку, пока не найду номер счета, который не совпадает с предыдущей строкой, затем перебираю второй файл и пытаюсь сопоставить любые совпадающие номера счетов с предыдущими заблокировать файл 1. У меня проблемы с доступом к этой части.

Некоторые примеры данных будут:

Файл1 .... Файл2
000990 000990 мой партнер
000990 000990 мой партнер
000760 000530 мой партнер
000760 000530 мой партнер
000530 000999 мой партнер
000530 000999 мой партнер
000999

Желаемый выход
000990
000990
000990 мой партнер
000990 мой партнер
000760
000760
000530
000530
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 Ответ

1 голос
/ 23 апреля 2011

Используйте для этого словари.Это гораздо проще, чем написать свое собственное сортировка-слияние.

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
...