#python #regex #data-processing
Вопрос:
Я хочу выполнить эту конкретную задачу, у меня есть 2 файла, первый с электронными письмами и учетными данными:
xavier.desprez@william.com:Xavier xavier.locqueneux@william.com:vocojydu xaviere.chevry@pepe.com:voluzigy Xavier.Therin@william.com:Pussycat5 xiomara.rivera@william.com:xrhj1971 xiomara.rivera@william-honduras.william.com:xrhj1971
и второй, с электронной почтой и местоположением:
xavier.desprez@william.com:BOSNIA xaviere.chevry@pepe.com:ROMANIA
Я хочу, чтобы всякий раз, когда электронное письмо из первого файла будет найдено во втором файле , строка заменялась на адрес электронной почты:УЧЕТНЫЕ ДАННЫЕ:МЕСТОПОЛОЖЕНИЕ, а когда оно не найдено, оно заканчивается: ЭЛЕКТРОННАЯ ПОЧТА:УЧЕТНЫЕ ДАННЫЕ:ПУСТО
поэтому окончательный файл должен быть таким:
xavier.desprez@william.com:Xavier:BOSNIA xavier.locqueneux@william.com:vocojydu:BLANK xaviere.chevry@pepe.com:voluzigy:ROMANIA Xavier.Therin@william.com:Pussycat5:BLANK xiomara.rivera@william.com:xrhj1971:BLANK xiomara.rivera@william-honduras.william.com:xrhj1971:BLANK
Я сделал несколько попыток на python, но писать его даже не стоит, потому что я не очень близок к решению.
С уважением !
Редактировать:
Это то, что я пытался:
import os import sys with open("test.txt", "r") as a_file: for line_a in a_file: stripped_email_a = line_a.strip().split(':')[0] with open("location.txt", "r") as b_file: for line_b in b_file: stripped_email_b = line_b.strip().split(':')[0] location = line_b.strip().split(':')[1] if stripped_email_a == stripped_email_b: a = line_a ":" location print(a.replace("n","")) else: b = line_a ":BLANK" print (b.replace("n",""))
Вот какой результат я получаю:
xavier.desprez@william.com:Xavier:BOSNIA xavier.desprez@william.com:Xavier:BLANK xaviere.chevry@pepe.com:voluzigy:BLANK xaviere.chevry@pepe.com:voluzigy:ROMANIA xavier.locqueneux@william.com:vocojydu:BLANK xavier.locqueneux@william.com:vocojydu:BLANK Xavier.Therin@william.com:Pussycat5:BLANK Xavier.Therin@william.com:Pussycat5:BLANK xiomara.rivera@william.com:xrhj1971:BLANK xiomara.rivera@william.com:xrhj1971:BLANK xiomara.rivera@william-honduras.william.com:xrhj1971:BLANK xiomara.rivera@william-honduras.william.com:xrhj1971:BLANK
Я очень близок, но получаю дубликаты 😉
С уважением
Комментарии:
1. Я отредактировал свой вопрос, вот что я попытался
Ответ №1:
Проблема дублирования возникает из-за того, что вы читаете два файла вложенным способом, как только строка из test.txt
них прочитана, вы открываете location.txt
файл для чтения и обрабатываете его. Затем вы читаете вторую строку test.txt
, снова открываете location.txt
и обрабатываете ее снова.
Вместо этого возьмите все необходимые данные location.txt
, скажем , из словаря, а затем используйте их при чтении test.txt
:
email_loc_dict = {} with open("location.txt", "r") as b_file: for line_b in b_file: splits = line_b.strip().split(':') email_loc_dict[splits[0]] = splits[1] with open("test.txt", "r") as a_file: for line_a in a_file: line_a = line_a.strip() stripped_email_a = line_a.split(':')[0] if stripped_email_a in email_loc_dict: a = line_a ":" email_loc_dict[stripped_email_a] print(a) else: b = line_a ":BLANK" print(b)
Выход:
xavier.desprez@william.com:Xavier:BOSNIA xavier.locqueneux@william.com:vocojydu:BLANK xaviere.chevry@pepe.com:voluzigy:ROMANIA Xavier.Therin@william.com:Pussycat5:BLANK xiomara.rivera@william.com:xrhj1971:BLANK xiomara.rivera@william-honduras.william.com:xrhj1971:BLANK