Удаляем дубликаты из файла на Python

Здравствуйте! Во время работы с текстовыми файлами часто возникает задача очистки данных от дубликатов. Например, у вас есть список email-адресов, номеров телефонов или логов, и вам нужно удалить повторяющиеся строки.
Сделать это вручную не только долго, но и ненадёжно. А вот с помощью Python вы можете автоматизировать этот процесс буквально за пару минут.
Для удаления повторяющихся строк мы будем использовать структуру данных set(), которая хранит только уникальные значения. Это позволяет легко проверять: встречалась ли такая строка ранее.
Программа на Python
infilename = input("Введите путь: ")
outfilename = input("Введите итоговый файл: ")
lines_seen = set() # Хранилище уже прочитанных строк
outfile = open(outfilename, "w", encoding='utf-8')
for line in open(infilename, "r", encoding='utf-8'):
if line not in lines_seen: # Если строка ещё не встречалась
outfile.write(line) # Записываем её в новый файл
lines_seen.add(line) # И добавляем в хранилище
outfile.close()
Как работает скрипт?
1. Программа запрашивает у пользователя:
- Путь к исходному файлу (откуда читать данные);
- Имя итогового файла (куда записать результат).
2. Открывается выходной файл для записи в кодировке UTF-8.
3. Программа построчно читает входной файл.
4. Каждая строка проверяется: если она ещё не встречалась — записывается в новый файл.
5. Все дубликаты игнорируются, а порядок строк сохраняется.
Где может пригодиться?
Данный скрипт будет полезен:
- При подготовке списков рассылок;
- Для очистки логов сервера;
- При анализе данных;
- Как основа для более сложных обработчиков текстовых файлов.
Если вы хотите освоить Python и автоматизировать рутинные задачи, рекомендую пройти курс "Написание лайфхаков на Python". Там вы узнаете:
- Как работать с файлами и папками;
- Как парсить данные из интернета;
- Как создавать свои собственные программы;
- И многое другое!
-
-
Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.