Архив рубрики: Python

Print в Python — подробности

print в PythonПривет всем! Оказывается, мои дети заинтересовались программированием 🙂 Как всякий папа я стараюсь поддерживать их интерес, а значит — пришла пора растолковывать Python на максимально простом языке. Итак, сегодня — первая программа всех программистов: Hello, World! и подробности работы с командой Print в Python. Читать далее Print в Python — подробности

Простой парсер почтовых адресов на Python

Привет всем! Совсем недавно я писал о некоторых идеях, относящихся к запросу: парсер почтовых адресов на Python. Что же — от слов к делу, подумал я, и доделал-таки код 🙂 Да, над конечным кодом, доступным по ссылке еще можно поработать и навести красоту, но — что получилось, то получилось.

А получилось у нас:
— перебор файлов в указанной папке
— сбор почтовых адресов из этих файлов
— удаление дубликатов из конечного списка

  1. import os
  2. import re
  3. import glob
  4. import time
  5. from os import listdir
  6. from os.path import isfile
  7. from os.path import join as joinpath
  8.  
  9. #Запрашиваем адрес рабочей папки, вводим его в переменную path
  10. path = str(input('Где находятся исходные файлы? : \n'))
  11.  
  12. #Обрабатываем введенную ссылку для получения стандартного стиля с двумя слешами
  13. regxp = '[\w-]+[\w:]'
  14. result = re.findall(regxp, path) #Разбиваем введенный адрес на составляющие без обратного слеша
  15. path = '\\\\'.join(result) #Добавляем двойной слеш после каждой папки (под формат Python)
  16.  
  17. file_for = str(input('В какую папку будем сохранять полученные результаты? :\n'))
  18. regxp = '[\w-]+[\w:]'
  19. file_for_result = re.findall(regxp, path)  # Разбиваем введенный адрес на составляющие без обратного слеша
  20. file_for_result = '\\\\'.join(file_for_result)  # Добавляем двойной слеш после каждой папки (под формат Python)
  21.  
  22. mail_list = str(input('Как назовем файл для результатов? :\n'))
  23. directory_for_base = file_for_result + mail_list
  24. print('Сохраняем все в файл: ', mail_list)
  25.  
  26. delete_files = int(input('Обработанные файлы удаляем? 1 - да, 2 - нет: \n'))
  27. if delete_files == 1: #Ветка с удалением обработанных файлов
  28.     os.chdir(path)  # Переходим по указанному адресу
  29.     print('Считаем количество файлов для обработки... \n')
  30.     all_files = len([name for name in os.listdir('.') if os.path.isfile(name)])  # Считаем количество файлов
  31.     print('Предстоит обработать файлов: ', all_files)
  32.     time.sleep(2)
  33.     for file in glob.glob('*.*'):
  34.         print(file)
  35.         print('Предстоит обработать файлов: ', all_files)
  36.         with open(file, 'r', encoding='utf8') as f:
  37.             pars = f.read()
  38.             reg = '[\w.-]+@[A-Za-z-]+\.[\w.]+'
  39.             result = re.findall(reg, pars)
  40.             print(result)
  41.             result = str(result)
  42.             result = result.split()
  43.             print('В итоге получили: ', result)
  44.             print(len(result))
  45.             print('А теперь попробуем очистить: \n')
  46.             finallist = []
  47.             for i in result:
  48.                 mailadress = i.replace('[', '').replace(']', '').replace('"', '').replace(',', '').replace('\'', '')
  49.                 with open(directory_for_base, 'a', encoding='utf8') as f:
  50.                     f.write(mailadress + '\n')
  51.                     all_files = all_files - 1
  52.         os.remove(file)
  53.     clearlist = []
  54.     with open(directory_for_base, 'r', encoding='utf8') as f:
  55.         for line in f:
  56.             mailadress = f.readline()
  57.             clearlist.append(mailadress)
  58.             print('Что получили из файла насыпью без чистки на дубли: ')
  59.             print(clearlist)
  60.             clearlist = list(set(clearlist))
  61.             print('Что получили после чистки на дубли: ')
  62.             print(clearlist)
  63.         for i in clearlist:
  64.             with open('ok_base.txt', 'a', encoding='utf8') as f:
  65.                 f.write(i)
  66.     print('Все!')
  67.  
  68. elif delete_files == 2: #Ветка без удаления обработанных файлов
  69.     os.chdir(path)  # Переходим по указанному адресу
  70.     print('Считаем количество файлов для обработки... \n')
  71.     all_files = len([name for name in os.listdir('.') if os.path.isfile(name)])  # Считаем количество файлов
  72.     print('Предстоит обработать файлов: ', all_files)
  73.     time.sleep(3)
  74.     for file in glob.glob('*.*'):
  75.         print(file)
  76.         print('Предстоит обработать файлов: ', all_files)
  77.         with open(file, 'r', encoding='utf8') as f:
  78.             pars = f.read()
  79.             reg = '[\w.-]+@[A-Za-z-]+\.[\w.]+'
  80.             result = re.findall(reg, pars)
  81.             print(result)
  82.             result = str(result)
  83.             result = result.split()
  84.             print('В итоге получили: ', result)
  85.             print(len(result))
  86.             print('А теперь попробуем очистить: \n')
  87.             finallist = []
  88.             for i in result:
  89.                 mailadress = i.replace('[', '').replace(']', '').replace('"', '').replace(',', '').replace('\'', '')
  90.                 with open(directory_for_base, 'a', encoding='utf8') as f:
  91.                     f.write(mailadress + '\n')
  92.         all_files = all_files - 1
  93.     clearlist = []
  94.     with open(directory_for_base, 'r', encoding='utf8') as f:
  95.         for line in f:
  96.             mailadress = f.readline()
  97.             clearlist.append(mailadress)
  98.             print('Что получили из файла насыпью без чистки на дубли: ')
  99.             print(clearlist)
  100.             clearlist = list(set(clearlist))
  101.             print('Что получили после чистки на дубли: ')
  102.             print(clearlist)
  103.         for i in clearlist:
  104.             with open('ok_base.txt', 'a', encoding='utf8') as f:
  105.                 f.write(i)
  106.     print('Все!')

Сам код выглядит следующим образом:

Спасибо за внимание!
Как всегда — комментарии, мысли, возражения — прошу на почту.

Напоминалка по работе с replace в Python

Лучшая учеба — решение практических задач — подумал я и начал писать парсер электронных адресов. Больше подробностей об этом тут, а сейчас — о доработанной версии, которая к настоящему моменту не доработана (сюрприз!), но уже что-то там собирает 🙂

Столкнулся с проблемой уборки лишних символов в списке (да, можно парсить построчно через регулярное выражение, но я пошел путем проверки файла целиком, после чего полученная строка с набором адресов разбивается на части. Оказывается, replace обрабатывает только одну пару старое-новое значение, а что делать, если таких значений несколько? Все просто: ставим все это через точку 🙂

mailaddress = i.replace(‘[‘, »).replace(‘]’, »).replace(‘»‘, »).replace(‘,’, »).replace(‘\», »)
, где:
i — некоторая строка
replace(‘[‘, ») — убираем открывающую квадратную скобку
replace(‘]’, ») — убираем закрывающую квадратную скобку
replace(‘»‘, ») — убираем двойную кавычку
replace(‘,’, ») — убираем запятую
replace(‘\», ») — убираем одинарную кавычку

Спасибо за внимание! И да, если у вас есть желание поделиться более работающей конструкцией — прошу написать на почту.

Как узнать прошлую дату с помощью Python?

Привет всем! Несмотря на то, что последнее время мой блог все больше посвящен ежедневным урокам английского и румынского языка, я полон оптимизма не забросить изучение Python (а еще программирования под Android, ага 🙂 ). И сегодня мы узнаем, как узнать прошлую (или будущую) дату с помощью Python. Читать далее Как узнать прошлую дату с помощью Python?