Как получить данные с одинаковым столбцом в двух текстовых файлах в новый текстовый файл? - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно получить более 200 000 аннотаций из исходного текстового файла аннотации (B.txt), сравнив строку первого столбца.

Например:

A.txt похож на

00001.jpg

00002.jpg

00004.jpg

...

B.txt похож на

00001.jpg 12 3 1 33

00002.jpg 32 4 2 2

00003.jpg 23 4 5 1

00004.jpg 3 5 3 1

00005.jpg 2 4 1 1

...

Я хочу получить C.txt как

00001.jpg 12 3 1 33

00002.jpg 32 4 2 2

00004.jpg 3 5 3 1

...

Кажется, код, который я написал, не может написать ни одной строкив т. текст

alines = open('A.txt', 'r').readlines() 
blines = open('B.txt', 'r').readlines()
fw = open('C.txt', 'w')
for al in alines:
    for bl in blines:
        if str(al) in str(bl):
            fw.write(bl)
fw.close()

1 Ответ

0 голосов
/ 06 ноября 2019

Ваш код не работает, потому что списки alines и blines содержат строки, заканчивающиеся символами '\ n', поэтому сравнение всегда заканчивается неудачей.

Следующий код удаляет '\ n'символы, а также исключает второй цикл «для»:

with open('A.txt', 'r') as fh:
    # Splitlines gets rid of the '\n' endlines
    alines = fh.read().splitlines()
with open('B.txt', 'r') as fh:
    # Splitlines gets rid of the '\n' endlines
    blines = fh.read().splitlines()
with open('C.txt', 'w') as fh:
    for line in blines:
        # Split the file name
        parts = line.split(' ', 1)
        # Look up the filename
        if parts[0] in alines:
            fh.write(line + '\n')
...