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