Я не знаю, чи це дозволена відповідь, оскільки більшість наступного коду походить із ChatGPT, а правила не дозволяють ділитися такими відповідями тут. Проте я не хочу ділитися кодом заради самого коду, а з метою отримання правильного — анонімного — введення для ChatGPT. Це більше інструмент для виконання завдань, це простий код, який допоможе безпечно вводити запитання. Ось чому я сподіваюся, що це дозволено.
УВАГА: цей код, здається, працює недостатньо добре. Нижче є зауваження про те, що регулярний вираз не вловлює всі шаблони, наприклад:
my_name@example.com
І:
ви повинні використовувати лише сімейство example.tld як приклад домени
Я прошу всіх, хто працює над цим, вставити іншу відповідь або змінити цю, щоб вона працювала.
# Імпорт необхідних бібліотек
import re
import json
import os
def anonymize_emails(шлях_файлу):
# Регулярний вираз для пошуку електронних листів
email_pattern = re.compile(r'[w.-]+@[w.-]+.w+')
# Словник для зберігання оригінальних і фіктивних адрес електронної пошти
email_map = {}
# Прочитати вхідний файл
з open(file_path, 'r', encoding='utf-8') як файл:
вміст = file.read()
# Знайти всі унікальні електронні листи у вмісті
unique_emails = set(re.findall(email_pattern, content))
# Створіть фіктивні електронні листи та заповніть карту електронних листів
для i, електронна пошта в enumerate(unique_emails, start=1):
dummy_email = f'dummy{i}@dummy.com'
email_map[електронна пошта] = dummy_email
content = content.replace(email, dummy_email)
# Створення нових шляхів до файлів
base, ext = os.path.splitext(шлях_файлу)
new_file_path = f'{base}_anonym{ext}'
json_filename = f'{os.path.basename(base)}_email_map.json'
json_path = os.path.join(os.path.dirname(файл_шлях), json_filename)
# Записати анонімний вміст у новий файл
з open(new_file_path, 'w', encoding='utf-8') як файл:
file.write(content)
# Записати карту електронної пошти у файл JSON
з open(json_path, 'w', encoding='utf-8') як json_file:
json.dump(email_map, json_file, secure_ascii=False, indent=4)
# Надрукувати шляхи до нових файлів
print(f'Анонімізацію завершено. Анонімний файл збережено за адресою: {new_file_path}')
print(f'Відповідність електронної пошти збережено за адресою: {json_path}')
if __name__ == "__main__":
# Запитувати у користувача шлях до файлу
file_path = input("Будь ласка, введіть шлях до текстового файлу: ")
anonymize_emails(шлях_файлу)