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

Использование python, Как я могу обработать два текстовых файла.например: a.txt имеет 5 групп, а b.txt также имеет 4 группы.b.txt будет искать группу, доступную на a.txt.Если найдено, запишите его в output.txt и, если не найдено, не записывайте его в output.txt.числа в группе должны совпадать, но порядок это не важно.

a.txt

GROUP :[11111, 22222, 33333]
GROUP :[22222, 11111]
GROUP :[46098]
GROUP :[66666, 55555, 44444]
GROUP :[55555, 44444]

b.txt

GROUP :[11111, 33333]
GROUP :[46098]
GROUP :[22222, 11111]
GROUP :[44444, 55555, 66666]

output.txt

GROUP :[22222, 11111]
GROUP :[46098]
GROUP :[44444, 55555, 66666]

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

С регулярным выражением и модулем re:

import re

grp_tmpl = list()

# Register all groups
f = open('b.txt', 'r')
for line in f.readlines():
    grp_tmpl.append(sorted(re.findall('\d+', line)))

# Find groups
out = open('output.txt', 'w')
f = open('a.txt', 'r')
for line in f.readlines():
    for t in grp_tmpl:
        if t == sorted(re.findall('\d+', line)):
            out.write(line)
0 голосов
/ 06 декабря 2018

Не самая красивая вещь в мире, но должна выполнить свою работу:

from collections import Counter

with open('a.txt', 'r') as a:
    a_list = []
    for line in a:
        groups = line.split(':')[1]
        groups = groups.split('[')[1].split(']')[0]
        groups = groups.split(', ')
        a_list.append(groups)

with open('b.txt', 'r') as b:
    b_list = []
    for line in b:
        groups = line.split(':')[1]
        groups = groups.split('[')[1].split(']')[0]
        groups = groups.split(', ')
        b_list.append(groups)

with open('output.txt', 'w') as output:
    a_counter = [Counter(i) for i in a_list]
    for group in b_list:
        if Counter(group) in a_counter:
            output.write(f"GROUP :{group}\n")
...