Сравнение двух строк из двух текстовых файлов по одной части текстового файла - PullRequest
0 голосов
/ 05 ноября 2018

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

Формат текстовых файлов следующий:

commontextinallcases   uniquetext2   potentiallycommontext    uniquetext4

Есть более 4 столбцов, но вы поняли идею. Я хочу проверить часть «потенциально важного текста» в каждом текстовом файле и, если они одинаковы, записать всю строку каждого текстового файла в новый текстовый файл для каждого с собственным уникальным текстом.

Разделить это довольно просто, просто используя команду .split () при чтении. Я нашел следующий код:

with open('some_file_1.txt', 'r') as file1:
with open('some_file_2.txt', 'r') as file2:
    same = set(file1).intersection(file2)

same.discard('\n')

with open('some_output_file.txt', 'w') as file_out:
    for line in same:
        file_out.write(line)

Но я не уверен, что это сработает для моего случая, когда мне нужно разделить строки. Есть ли способ сделать это, что мне не хватает?

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Не думаю, что этот подход подходит для вашего случая.
Я бы попробовал как

with open('some_file_1.txt', 'r') as file1, open('some_file_2.txt', 'r') as file2, open('some_output_file.txt', 'w') as file_out:
    for line1, line2 in zip(file1, file2):
        if line1.split()[2] == line2.split()[2]:
            file_out.write(line1)
            file_out.write(line2)
0 голосов
/ 05 ноября 2018

Возможны более короткие решения, но это должно сработать

PCT_IDX = _  # find which index of line.split() corresponds to potentiallycommontext

def lines(filename):
    with open(filename, 'r') as file:
        for line in file:
            line = line.rstrip('\n')
            yield line

lines_1 = lines('some_file_1.txt')
lines_2 = lines('some_file_2.txt')
with open('some_output_file.txt', 'w') as file_out:
    for (line_1, line_2) in zip(lines_1, lines_2):
        maybe_cmn1 = line_1.split()[PCT_IDX]
        maybe_cmn2 = line_2.split()[PCT_IDX]
        if maybe_cmn1 == maybe_cmn2:
            file_out.write(line_1)
            file_out.write(line_2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...