Искать сегменты содержимого одного файла .txt в другом файле .txt по цифрам и печатать совпадающие строки

У меня есть два текстовых файла: file1.txt и file2.txt.

File1.txt содержит следующее:

12345678

File2.txt содержит это:

34567999
23499899
13571234

Теперь я хочу посмотреть на первые 3 цифры строки 1 файла file1.txt (а это 123). Теперь я хочу перейти к file2.txt и найти эти три цифры (123). Когда я нахожу эти цифры в таком порядке в строке (то есть: это будет иметь место в строке 3: 1357 123 4), я хочу записать эту строку в новый файл: file_new.txt .

Затем, если все строки в file2.txt были найдены для этой последовательности из file1.txt (123), я хочу переместить на одну цифру дальше в file1.txt, чтобы новый поисковый запрос был 234. Теперь я хочу перейти снова в file2.txt для поиска всех последовательностей с 234 в (т.е. строка 2 (234 99899) и строка 3 (13571 234)). Поскольку строка 3 уже содержится в file_new.txt, я хочу записать только строку 2 в file_new.txt.

Я хочу продолжить этот процесс, ища следующие три цифры, пока вся строка в file1.txt не будет найдена в file2.txt.

Может ли кто-нибудь помочь мне решить эту проблему?


person licm    schedule 29.06.2021    source источник


Ответы (2)


Вы можете использовать строки чтения для чтения текстового файла в список, а затем сгенерировать новый список L, используя цикл while, как показано ниже. Затем вы можете записать этот список L в текстовый файл.

with open(file1_path) as file1:
    search_string = file1.readlines()[0]

with open(file2_path) as file2:
    strings_to_search = file2.readlines()

L= []
n=0 
while n < len(search_string):
    for i in strings_to_search:
        if search_string[n:n+3] in i and i not in L:
            L.append(i)
        n +=1
person user215865    schedule 29.06.2021

У меня есть небольшое решение:

f1 = open('file1.txt', 'r') # open in read mode

for digit in range(len(f1.readlines()[0])-2):
    threedigits = f1.readlines()[0][digit:digit+3] # This is the first three digits

    f2 = open('file2.txt', 'r') # open in read mode
    lines = f2.readlines() # we read all lines
    f2.close()
    file_new = []
    for i in lines:
        if firstthreedigits in i:
            file_new.append(i) # we add each lines containing the first three digits

    f3 = open('file_new.txt', 'w') # open in write mode
    for i in range(len(file_new)):
        f3.write(file_new[i]) # we write all lines with first three digits
    f3.close()

f1.close()

Это должно быть

person Sozy    schedule 29.06.2021