Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
KeyDiWeb
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 15
#1

Нужен скрипт, чтобы проверить email на схожесть - C++

09.04.2015, 15:15. Просмотров 393. Ответов 2
Метки нет (Все метки)

Доброе время суток. Создаю тему в данном разделе, поскольку мой вопрос можно отнести к разным языкам как думаю.
Задача проста, но для несведущего в программировании сложна.
Есть база данных email, база большая, несколько десятков тысяч. Так вот попадаются порой схожие email, например:
c.h.e.a.po.akl.e.y.s.ou.t.l.et.au@gmail.com
c.hea.poa.kleysu.nglass.esa.us.ale@gmail.com
chea.poakley.su.n.g.la.sses.au.s.ale@gmail.com
chea.poa.kley.sungl.assesa.u.sal.e@gmail.com

Суть в том, что до @ порядок и количество букв одинаковое, только вот расположение точек разное. Нужно убрать такие email. Можно проверять на схожесть конечно на сайтах подобных, но там строку со строкой только, поодиночке. Возможно ли как то реализовать скрипт, который бы проверял по строкам, где по одному email, или что удобней таблицу, саму с собой для выявления и удаления таких email? Буду очень благодарен в помощи. Если есть наметки, или уже видели подобное где-то, или знаете и это довольно просто, прошу помочь.
Требовать готовый код, особенно если он трудоемкий даже не думал. С уважением, Дмитрий.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2015, 15:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужен скрипт, чтобы проверить email на схожесть (C++):

нужен скрипт - C++
народ помогите нужен скрипт который заставит мышку нажимать и отжимать левый, правый таб а также перемещатся в заданых координатах в...

Схожесть текстов (расстояние Левенштейна) - C++
Программа, которая сравнивает 2 теста на схожесть из 1.txt и 2.txt нужно что бы программа не подсчитывала восклицательные знаки и...

Скрипт сбора email - PHP
В общем есть форма: при вводе email нужно отправить на указанный email письмо и указанный email записать в файл на сервер. Как это...

Скрипт отправки данных на email - PHP
Навеяло отсюда http://www.cyberforum.ru/php-beginners/thread436318.html Я не знаю куда вставлять эти коды? Какие файлы нужно создать? И...

Скрипт отправки данных на email - PHP
В чем будет заключаться скрипта отправки данных с формы на электронный ящик? Допустим создали сайт,на нем есть форма для сбора...

Проверить, является ли строка email - C (СИ)
задача: написать программу для проверки является ли строка имейлом. первый вопрос. Какую лучше использовать библиотеку и где достаточно...

2
Kastaneda
Jesus loves me
Эксперт С++
4729 / 2933 / 242
Регистрация: 12.12.2009
Сообщений: 7,443
Записей в блоге: 2
Завершенные тесты: 1
09.04.2015, 16:19 #2
Если по памяти ограничений нет (речь о нескольких десятках мегабайт), то просто читать все адреса в std::set. Только set'у подсунуть компаратор, который будет сравнивать адреса, предварительно удалив оттуда все точки до символа @. В итоге получим множество уникальных адресов, которое можно сбросить в файл.
Но С++ не самый удачный выбор, проще может на питоне это сделать)
0
mymedia
193 / 193 / 48
Регистрация: 27.05.2011
Сообщений: 544
11.04.2015, 09:56 #3
Ну, вот, наверное, как-то так. Я думаю, на С++ будет всё-таки быстрее, чем на питоне. Сравнивать "вручную" я тоже решил ради скорости, чтобы не было лишних копирований. Конечно же, компилировать стоит с максимальной опитимизацией.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <set>
#include <string>
 
using namespace std;
    
/* функтор */
struct compare_without_dots {
    bool operator ()(const string &s1, const string &s2) {
        for (auto p1 = begin(s1), p2 = begin(s2); p1 != end(s1) and p2 != end(s2); p1++, p2++) {
            if (*p1 == '.' and p1+1 != end(s1)) p1++;
            if (*p2 == '.' and p2+1 != end(s2)) p2++;
            if (*p1 != *p2) return *p1 < *p2;
        }
        return false;
    }
};
 
int main() {
    string file_name;
    cout << "Введите имя файла с базой данных: ";
    getline(cin, file_name);
    ifstream in_file(file_name);
    cout << "Введите имя файла для результата: ";
    getline(cin, file_name);
    ofstream out_file(file_name);
 
    set<string, compare_without_dots> database;
    while (in_file) {
        string email;
        getline(in_file, email);
        database.insert(email);
    }
 
    copy(begin(database), end(database), ostream_iterator<string>(out_file, "\n"));
}

Можно попытаться использовать unordered_map, правда, в результате могут тогда исчезнуть какие-то неповторяющиеся адреса. Тут только надо правильно построить хеш-функцию.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2015, 09:56
Привет! Вот еще темы с ответами:

Не работает скрипт отправки данных формы на email - PHP
&lt;form action=&quot;assests/index.php&quot; method=&quot;post&quot;&gt; Тип: &lt;select name=&quot;type size=&quot;1&quot;&gt; &lt;option selected...

Скрипт отправки данных на email c html сайта - PHP
Добрый день! Подскажите пожалуйста где ошибка в коде. Суть в том, что на html-сайте есть форма отправки сообщений. Вот ее код: &lt;form...

Email рассылки свой скрипт или MailChimp? - PHP
Предложили заняться большим проектом. Для социальной сети нужно реализовать возможность отправления 50,000 email писем сутки. Первое что...

Проверка поля email перед отправкой | допилить скрипт - jQuery
Всем привет! Есть Ajax скрипт отправки сообщений, но в нем коряво проверяет Email, нужно добавить функцию, что бы проверяло - есть ли @ в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru