Как заменить строки из одного текстового файла в другой текстовый файл в python - PullRequest
0 голосов
/ 25 мая 2020

Я пишу код, цель которого - прочитать текстовый файл (fileONE.txt) и сохранить только данные, которые находятся в другом текстовом файле (fileTWO.txt), в другом файле (fileTHREE.txt), как и пример ниже:

fileONE.txt
aaa bbb cccddd
ccc ddd aaa eee

fileTWO.txt
aaa
bbb
ccc

final result - fileTHREE.txt
aaa bbb ccc 
ccc aaa

Обратите внимание, что в конечном файле (fileTHREE.txt) хранятся только данные, которые находятся в файле TWO.txt.

Код следует ниже и, по-видимому, работает однако некоторые данные он не может удалить в конечном файле. Например, данные «ddd», которые должны появиться, продолжаются.

id_codigo = open('fileONE.txt', 'r', -1, encoding="utf-8")
with open('fileTWO.txt') as f:
        for line in f:
            key1 = ''
            (key) = line.split()
            key1 = key1.join(key)
            id_codigo = id_codigo.replace(key1, " "+key1+" ")
    id_codigo = id_codigo.split()

    with open('fileTWO.txt') as f:
        file_elements = f.read().splitlines()
        for i in id_codigo:
            if i not in file_elements:
                id_codigo.remove(i)
    id_codigo1 = id_codigo1.join(id_codigo)    
    return id_codigo1

Объяснение: «fileONE.txt» переходит к id_codi go. При первом открытии while я разделяю каждый символ в файле 'fileTWO.txt' и заменяю его в id_codi go. (Некоторые символы объединяются. Первый while также служит для разделения символов)

Во втором while я удаляю (из id_codi go) те, которые не являются частью ' файлTWO.txt '. И я возвращаю все в id_codigo1 для записи в другой файл (fileTHREE.txt).

По-видимому, он делает то, что должен делать, но некоторые символы, которых не должно быть, появляются, например 'ddd' , например. Кто-то может проверить, чего не хватает. Я отлаживал и не могу найти ошибку.

1 Ответ

1 голос
/ 25 мая 2020

не рекомендуется открывать второй файл в al oop, возможно, вы сможете это сделать

keep = None
with open('fileTWO.txt', 'r', encoding='utf-8') as f:
    keep = f.read().splitlines()

result = []
with open('fileONE.txt', 'r', encoding='utf-8') as f:
    lines = f.read().splitlines()
    for line in lines:
        result.append(list(filter(lambda x: x in keep, line.split(" "))))

with open('fileTHREE.txt', 'w', encoding='utf-8') as f:
    for line in result:
        f.writelines(" ".join(line) + "\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...