Привет всем! Сегодня мы узнаем, как с помощью Python реализовать запрос «Python — заглавные буквы» 🙂 На помощь придет метод title(), работа с которым представлена в коде ниже: Читать далее Python — заглавные буквы
Архив рубрики: Python
Print в Python — подробности
Привет всем! Оказывается, мои дети заинтересовались программированием 🙂 Как всякий папа я стараюсь поддерживать их интерес, а значит — пришла пора растолковывать Python на максимально простом языке. Итак, сегодня — первая программа всех программистов: Hello, World! и подробности работы с командой Print в Python. Читать далее Print в Python — подробности
Простой парсер почтовых адресов на Python
Привет всем! Совсем недавно я писал о некоторых идеях, относящихся к запросу: парсер почтовых адресов на Python. Что же — от слов к делу, подумал я, и доделал-таки код 🙂 Да, над конечным кодом, доступным по ссылке еще можно поработать и навести красоту, но — что получилось, то получилось.
А получилось у нас:
— перебор файлов в указанной папке
— сбор почтовых адресов из этих файлов
— удаление дубликатов из конечного списка
-
import os
-
import re
-
import glob
-
import time
-
from os import listdir
-
from os.path import isfile
-
from os.path import join as joinpath
-
-
#Запрашиваем адрес рабочей папки, вводим его в переменную path
-
path = str(input('Где находятся исходные файлы? : \n'))
-
-
#Обрабатываем введенную ссылку для получения стандартного стиля с двумя слешами
-
regxp = '[\w-]+[\w:]'
-
result = re.findall(regxp, path) #Разбиваем введенный адрес на составляющие без обратного слеша
-
path = '\\\\'.join(result) #Добавляем двойной слеш после каждой папки (под формат Python)
-
-
file_for = str(input('В какую папку будем сохранять полученные результаты? :\n'))
-
regxp = '[\w-]+[\w:]'
-
file_for_result = re.findall(regxp, path) # Разбиваем введенный адрес на составляющие без обратного слеша
-
file_for_result = '\\\\'.join(file_for_result) # Добавляем двойной слеш после каждой папки (под формат Python)
-
-
mail_list = str(input('Как назовем файл для результатов? :\n'))
-
directory_for_base = file_for_result + mail_list
-
print('Сохраняем все в файл: ', mail_list)
-
-
delete_files = int(input('Обработанные файлы удаляем? 1 - да, 2 - нет: \n'))
-
if delete_files == 1: #Ветка с удалением обработанных файлов
-
os.chdir(path) # Переходим по указанному адресу
-
print('Считаем количество файлов для обработки... \n')
-
all_files = len([name for name in os.listdir('.') if os.path.isfile(name)]) # Считаем количество файлов
-
print('Предстоит обработать файлов: ', all_files)
-
time.sleep(2)
-
for file in glob.glob('*.*'):
-
print(file)
-
print('Предстоит обработать файлов: ', all_files)
-
with open(file, 'r', encoding='utf8') as f:
-
pars = f.read()
-
reg = '[\w.-]+@[A-Za-z-]+\.[\w.]+'
-
result = re.findall(reg, pars)
-
print(result)
-
result = str(result)
-
result = result.split()
-
print('В итоге получили: ', result)
-
print(len(result))
-
print('А теперь попробуем очистить: \n')
-
finallist = []
-
for i in result:
-
mailadress = i.replace('[', '').replace(']', '').replace('"', '').replace(',', '').replace('\'', '')
-
with open(directory_for_base, 'a', encoding='utf8') as f:
-
f.write(mailadress + '\n')
-
all_files = all_files - 1
-
os.remove(file)
-
clearlist = []
-
with open(directory_for_base, 'r', encoding='utf8') as f:
-
for line in f:
-
mailadress = f.readline()
-
clearlist.append(mailadress)
-
print('Что получили из файла насыпью без чистки на дубли: ')
-
print(clearlist)
-
clearlist = list(set(clearlist))
-
print('Что получили после чистки на дубли: ')
-
print(clearlist)
-
for i in clearlist:
-
with open('ok_base.txt', 'a', encoding='utf8') as f:
-
f.write(i)
-
print('Все!')
-
-
elif delete_files == 2: #Ветка без удаления обработанных файлов
-
os.chdir(path) # Переходим по указанному адресу
-
print('Считаем количество файлов для обработки... \n')
-
all_files = len([name for name in os.listdir('.') if os.path.isfile(name)]) # Считаем количество файлов
-
print('Предстоит обработать файлов: ', all_files)
-
time.sleep(3)
-
for file in glob.glob('*.*'):
-
print(file)
-
print('Предстоит обработать файлов: ', all_files)
-
with open(file, 'r', encoding='utf8') as f:
-
pars = f.read()
-
reg = '[\w.-]+@[A-Za-z-]+\.[\w.]+'
-
result = re.findall(reg, pars)
-
print(result)
-
result = str(result)
-
result = result.split()
-
print('В итоге получили: ', result)
-
print(len(result))
-
print('А теперь попробуем очистить: \n')
-
finallist = []
-
for i in result:
-
mailadress = i.replace('[', '').replace(']', '').replace('"', '').replace(',', '').replace('\'', '')
-
with open(directory_for_base, 'a', encoding='utf8') as f:
-
f.write(mailadress + '\n')
-
all_files = all_files - 1
-
clearlist = []
-
with open(directory_for_base, 'r', encoding='utf8') as f:
-
for line in f:
-
mailadress = f.readline()
-
clearlist.append(mailadress)
-
print('Что получили из файла насыпью без чистки на дубли: ')
-
print(clearlist)
-
clearlist = list(set(clearlist))
-
print('Что получили после чистки на дубли: ')
-
print(clearlist)
-
for i in clearlist:
-
with open('ok_base.txt', 'a', encoding='utf8') as f:
-
f.write(i)
-
print('Все!')
Сам код выглядит следующим образом:
Спасибо за внимание!
Как всегда — комментарии, мысли, возражения — прошу на почту.
Напоминалка по работе с replace в Python
Лучшая учеба — решение практических задач — подумал я и начал писать парсер электронных адресов. Больше подробностей об этом тут, а сейчас — о доработанной версии, которая к настоящему моменту не доработана (сюрприз!), но уже что-то там собирает 🙂
Столкнулся с проблемой уборки лишних символов в списке (да, можно парсить построчно через регулярное выражение, но я пошел путем проверки файла целиком, после чего полученная строка с набором адресов разбивается на части. Оказывается, replace обрабатывает только одну пару старое-новое значение, а что делать, если таких значений несколько? Все просто: ставим все это через точку 🙂
mailaddress = i.replace(‘[‘, »).replace(‘]’, »).replace(‘»‘, »).replace(‘,’, »).replace(‘\», »)
, где:
i — некоторая строка
replace(‘[‘, ») — убираем открывающую квадратную скобку
replace(‘]’, ») — убираем закрывающую квадратную скобку
replace(‘»‘, ») — убираем двойную кавычку
replace(‘,’, ») — убираем запятую
replace(‘\», ») — убираем одинарную кавычку
Спасибо за внимание! И да, если у вас есть желание поделиться более работающей конструкцией — прошу написать на почту.
Как узнать прошлую дату с помощью Python?
Привет всем! Несмотря на то, что последнее время мой блог все больше посвящен ежедневным урокам английского и румынского языка, я полон оптимизма не забросить изучение Python (а еще программирования под Android, ага 🙂 ). И сегодня мы узнаем, как узнать прошлую (или будущую) дату с помощью Python. Читать далее Как узнать прошлую дату с помощью Python?