Python: специфический поиск и вывод результатов нового элемента в новый файл - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь выучить Python :) и извините, если это действительно нубский вопрос.Я пытался найти, но не смог найти именно то, что искал.

Я пытаюсь сравнить 2 файла.но не просто прямо вперед, как это.Я хочу что-то более точное

там будет более 200 записей имени, и мне нужно извлечь новые записи из файла 2

пусть, скажем, файл один имеет эти записи:

некоторыепроизвольный текст -Name: Item_01_01- некоторый случайный текст
некоторый случайный текст -Name: Thing_01_01- некоторый случайный текст

и файл 2 содержит
некоторый случайный текст* некоторый случайный текст -Name: Thing_01- некоторый случайный текст
некоторый случайный текст -Name: Object_02- некоторый случайный текст

Я хочу сделать что-то, что сравнит 2 файла и извлечет новый элемент в файл2

поэтому я хочу, чтобы информация Object_02 появлялась в моем выходном файле

при поиске информации в -Name: XXXXX-

Я знаю, как читать файлы и записывать файлы в pythonЭто информация, которую я не знаю, как ее получить.

И да, в файле 1 больше номеров, чем на концах каждого элемента

Надеюсь, это понятно

(извините английский не мой основной язык)

Большое спасибо в адваNCE для помощи.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

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

Вместо этого, используя имя, я использовал ID, состоящий из 16 цифр.

Спасибо @davedwards за неоценимую помощь

код:

with open('file1.txt', 'r') as f:
    f1_data = f.readlines()
with open('file2.txt', 'r') as f:
    f2_data = f.readlines()
f2_data = f2_data[0].split(" ")
new_data = []
for terms in f2_data:
    found = False
    for line in f1_data:
        if line.find(terms) != -1:
            found = True
            break
    if not found:
        new_data.append(terms)
with open('new_data.txt', 'w') as f:
    f.writelines(" OR ".join(new_data))
0 голосов
/ 29 января 2019

Если допустить, что порядок записи не имеет значения, я думаю, что наиболее эффективный способ сделать это - использовать набор для хранения значений из обоих файлов, а затем записать его в файл 2. Вот мой код.

data = set() # using a set to store distinct data
f = open("file1.txt", "r")
for line in f:
    data.add(line) # store data from file 1
f.close()
f = open("file2.txt", "r")
for line in f:
    data.add(line) # store data from file 2
f.close()
f = open("file2.txt","w")
for line in data:
    f.write(data) # finally write the distinct values to the file
f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...