Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 29, 2016 07:13:39

deluxxx
Зарегистрирован: 2016-08-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение и замена текста в 2 txt файлах

Помогите, пожалуйста, кодом решения следующей проблемы

есть два тхт файла
первый содержит текст следующего вида

Андрей;123;789
Светлана;7250;924
Игорь;756758;7538

второй содержит текст следующего вида

123;789;QQQ
7250;924;RRR
756758;7538;TTT

нужно сделать их сравнение и замену при совпадении и сохранение в отдельный файл
пример
Андрей;123;789 = 123;789;QQQ сохранение Андрей;QQQ

Офлайн

#2 Авг. 29, 2016 09:12:59

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Сравнение и замена текста в 2 txt файлах

В чем сложность?
Покажите код? Что не получаеться?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Авг. 29, 2016 20:08:27

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Сравнение и замена текста в 2 txt файлах

ну как вариант

 with open('1.txt') as file_1 , open('2.txt') as file_2:
    list_file_1 = [i.strip() for i in file_1.readlines()]
    list_file_2 = [i.strip() for i in file_2.readlines()]
list_3 = []
for i in list_file_1:
    elem = i[i.find(';')+1:]
    for j in list_file_2:
        if elem in j:
            list_3.append ('{};{}'.format(i.split(';')[0],j.split(';')[-1]))
with open('3.txt','w') as file_3:
    for i in list_3:
        file_3.write(i+'\n')

Офлайн

#4 Авг. 29, 2016 22:28:02

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Сравнение и замена текста в 2 txt файлах

marvellik
ну как вариант
еще вариант
 import pandas as pd
f1=pd.read_csv("f1.txt",delimiter=";",header=None)
f1.columns=["name","i1","i2"]
f2=pd.read_csv("f2.txt",delimiter=";",header=None)
f2.columns=["i1","i2","name"]
print(pd.merge(f1,f2,on=["i1","i2"]))
>>>         name_x      i1       i2    name_y
         0   Светлана    7250   924    RRR
         1     Игорь  756758  7538    TTT



Офлайн

#5 Авг. 29, 2016 22:38:05

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Сравнение и замена текста в 2 txt файлах

doza_and
еще вариант
так результат немного не тот
 Светлана    7250   924    RRR
 Игорь  756758  7538    TTT
deluxxx
сохранение Андрей;QQQ
то есть цифры не должны прописываться
 Андрей;QQQ
Светлана;RRR
Игорь;TTT
хотя если прописать в файл
 res = 'Светлана    7250   924    RRR'.split()
print('{};{}'.format(res[0],res[-1]))
>>> Светлана;RRR

Отредактировано marvellik (Авг. 29, 2016 22:46:17)

Офлайн

#6 Авг. 30, 2016 02:50:01

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Сравнение и замена текста в 2 txt файлах

marvellik
так результат немного не тот
я этим кодом немного не то хотел сказать.
Загрузка данных из таблицы в файле, сохранение в файл и различные виды join таблиц, совершенно стандартные операции, нет смысла их каждый раз переоткрывать заново.

Ну и выборка колонок таблицы очевидно тоже есть :).
 res[['name_x','name_y']]

В большинстве случаев самописный вариант оказывается хуже. Например у вас трудоемкость O(N1*N2). В merge наверное O(N1+N2).
 list_file_1 = [i.strip() for i in file_1.readlines()]
лучше заменить на
 list_file_1 = file_1.read().split()
конструкция
 if elem in j
Если я правильно понимаю будет неправильно срабатывать на комбинации
 ([a,i1,i2],[b,i1,i2])

Но ваш код конечно будет полезен ТС, поскольку показывает как использовать основные конструкции языка.



Отредактировано doza_and (Авг. 30, 2016 02:54:47)

Офлайн

#7 Авг. 30, 2016 07:27:24

deluxxx
Зарегистрирован: 2016-08-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение и замена текста в 2 txt файлах

всем спасибо за помощь с кодом разобрался

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version