Arhn - архитектура программирования

Как вы извлекаете номера телефонов из тел писем в Outlook?

У меня довольно большая учетная запись, заполненная ~ 20 000 писем в Outlook, и мне нужно извлечь номера телефонов из этих писем.

Примером электронного письма может быть:

From: Amy Schwartz <[email protected]>

Dear Anatoliy, 
I want you to do blahdy blahdy blah.

Amy Schwartz
(347) 555-1212 <---- I want this
Blahdy Blah Company

Идея состоит в том, чтобы просмотреть каждое электронное письмо и сопоставить последний номер телефона с помощью регулярного выражения и экспортировать список в следующем формате:

  • Имя: Имя из поля «От»
  • Электронная почта: Электронная почта из поля «От»
  • Телефон: последний номер телефона, указанный в тексте электронного письма.

Есть ли у вас какие-либо идеи о том, как это сделать?

ОБНОВЛЕНИЕ: не нашел никаких готовых решений, но я собираю свои собственные, используя это. codeTwo Outlook Express. Вы можете экспортировать любое поле электронной почты (тело, тело HTML, от, от имени) в CSV. Это немного медленно (3 секунды сообщение на моем i7 iMac с виртуальной машиной Win7). Но это работает :) И оттуда я, вероятно, просто добавлю базу данных и поколдую с регулярными выражениями. Опубликую процесс, как только закончу.

08.03.2013

  • я бы посоветовал сначала получить все строки, содержащие числа, независимо от того, что это такое. я предполагаю, что номера телефонов могут быть очень разными, если вы имеете дело с размером 20 КБ. затем поиграйте с регулярным выражением, которое выбирает любые числа, которые содержат только - или ). надеюсь это поможет 08.03.2013

Ответы:


1

Догадаться. Это очень просто, если вы знаете, как создать скрипт Node.js (но я уверен, что вы можете написать его на Bash).

1) Используйте плагин Outlook Export, чтобы экспортировать все ваши электронные письма в CSV. Убедитесь, что электронная почта — это первый столбец, имя — второй столбец, а тело (текст) — третий столбец.

2) Напишите следующий скрипт в Node JS в том же каталоге, что и ваш CSV-файл электронной почты.

var fs = require('fs');
var csv = require('csv');
csv()
    .from.stream(fs.createReadStream(__dirname+'/data.csv'))
    .to.path(__dirname+'/out.csv')
    .transform( function(row){
      var match = row[2].match(/(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})/);
        return '"' + row[0] + '","' + row[1] + '","' + (match ? match[0] : '') + '"\n';
    })
    .on('error', function(error){
      console.log(error.message);
    });

и запустите его, используя node script.js.

И это все! Работает очень быстро (~ 20 секунд для 20 тысяч писем).

Дайте мне знать, если у вас есть какие-либо предложения (или упакуйте это в загружаемый исполняемый файл)

22.03.2013
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..