py.Net.JS Ответов: 2

Python заменяет совпадающее содержимое в файле


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

Файл 1

Азбука Л1
Л2 ХХС
Л3 рты
Л4 тю
L5 678

Файл 2

Азбука Л1
Л2 ХХС
Л3 рты
Л4 тю
L5 678
L6 HTY
L7 Кю
L8 POI

Мне нужно сравнить файл 1 и файл 2, а затем заменить совпадающее содержимое в файле 1, чтобы заменить его пробелами.

Я написал следующий код на Python, но он не заменяет значения. Как я могу получить желаемые результаты. Должен ли я использовать другой подход ? Пожалуйста, посоветуйте...

заранее спасибо.

Что я уже пробовал:

import re


newcontent: str=''
oldcontent: str=''

with open('C:\Temp\\test1.log', 'r') as content_file:
    newcontent = content_file.read()
    #print(newcontent)


def replaceData(txt):
    with open('C:\Temp\\test2.log', "r") as fout:
        oldcontent = fout.read()
        print(oldcontent)

    print('end of old content....')

    a=txt.replace(oldcontent,'')
    print(a)

replaceData(newcontent)

2 Ответов

Рейтинг:
13

Richard MacCutchan

Вы пытаетесь заменить полный текст второго файла, который встречается в первом. Но этот текст не существует в первом файле, только часть его. Вы должны прочитать второй файл строка за строкой и попробовать заменить только текст этой строки. Что-то вроде:

import re

newcontent: str=''
oldcontent: str=''

with open('C:\Temp\\test1.log', 'r') as content_file:
    newcontent = content_file.read()
    #print(newcontent)


def replaceData(txt):
    with open('C:\Temp\\test2.log', "r") as fout:
        for line in fout:
            txt=txt.replace(line,'')

replaceData(newcontent)


Рейтинг:
1

CPallini

Что-то похожее на

with open("test1.log") as f:
    f1lin = f.readlines()

with open("test2.log") as f:
    f2lin = f.readlines()

f3lin = [s for s in f2lin if not (s in f1lin)]
with open("test3.log", "w+") as f:
  f.writelines(f3lin)
Я полагаю.