table_chart
code
Python
verified
Бесплатная загрузка
devices
Кроссплатформенный
code Предпросмотр кода
Python#!/usr/bin/env python3
"""
Email Extractor for CSV Files
Extract emails from CSV with auto-detection
"""
import csv
import re
EMAIL_PATTERN = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
def detect_email_column(header, sample_row):
"""Auto-detect email column by name or content"""
email_keywords = ['email', 'mail', 'e-mail', 'correo']
# Check column names first
for i, col in enumerate(header):
if any(kw in col.lower() for kw in email_keywords):
return i
# Check sample content
for i, value in enumerate(sample_row):
if re.match(EMAIL_PATTERN, str(value).strip()):
return i
return None
def extract_from_csv(filepath, email_column=None):
"""Extract emails from CSV file"""
emails = set()
with open(filepath, 'r', encoding='utf-8') as f:
reader = csv.reader(f)
header = next(reader, None)
sample = next(reader, None)
if email_column is None:
email_column = detect_email_column(header, sample or [])
if email_column is None:
raise ValueError("Could not detect email column")
# Process sample row
if sample and len(sample) > email_column:
email = sample[email_column].strip()
if re.match(EMAIL_PATTERN, email):
emails.add(email.lower())
# Process remaining rows
for row in reader:
if len(row) > email_column:
email = row[email_column].strip()
if re.match(EMAIL_PATTERN, email):
emails.add(email.lower())
return list(emails)
if __name__ == '__main__':
import sys
emails = extract_from_csv(sys.argv[1])
print(f"Found {len(emails)} unique emails")
info Об инструменте
Экстрактор email из CSV-файлов интеллектуально извлекает адреса электронной почты из экспортов таблиц. Автоматически определяет колонки с email по названию или паттерну содержимого.
Ключевые особенности
- Автоопределение колонок - Находит колонки email по заголовку или содержимому
- Валидация синтаксиса - Проверяет каждый email по RFC-паттерну
- Дедупликация - Автоматически удаляет дубликаты email
- Нормализация регистра - Преобразует все email в нижний регистр
- Поддержка больших файлов - Потоковая обработка для экономии памяти
Поддерживаемые форматы
- Стандартный CSV (разделитель - запятая)
- Значения с разделителем - точка с запятой
- Значения с разделителем - табуляция (TSV)
- Экспорты Excel
Требования
- Python 3.7+
- Без внешних зависимостей
download Скачать скрипт
Нужна полная автоматизация?
Попробуйте Postigo для автоматизированных email-кампаний с AI-персонализацией
rocket_launch Start Free Trial