Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 2, 2017 13:51:11

P_N
Зарегистрирован: 2016-02-09
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не возвращает значение

Доброе время.

 # -*- coding: utf-8 -*-
from __future__ import print_function
import re, sys, os, io
myFile="e://search.txt"
def searchStr(myFile):
    global findmail
    with io.open(myFile, encoding='utf-8') as f:
        head=[next(f) for x in range(5)]
        for i in head:
            res=re.findall('From:.*<*>', i)
            mail=''.join(res)
            findmail=mail[7:-1]
            return findmail
j=0
j=searchStr(myFile)
print(j)
print(findmail)
Хочу найти е-мейл. Текстовый файл существует, е-мейл в функции находит, а получить его в основную программу не молучается. Подскажите, пожалуйста, где исправить? Заранее спасибо.

Офлайн

#2 Окт. 2, 2017 14:09:31

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Не возвращает значение

Даже если опустить ненужность там global findmail, где файл из которого оно должно вытянуть емейл?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Окт. 2, 2017 14:15:28

P_N
Зарегистрирован: 2016-02-09
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не возвращает значение

файл есть, лежит по указанному пути: e:\search.txt

dgfhgfhgfh gfhgfh gfhgfhfg
hgfh ghfgh From: <ivanov@domain.ru>
gfdfgfd
fgdfgdf
fgdfgdffg for: <it@domain.ru>
gtdfgdf
fgdfgdfg
fgdfgdfg
fgdfgdfgd

Офлайн

#4 Окт. 2, 2017 15:02:39

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Не возвращает значение

P_N
е-мейл в функции находит
Нифига оно не находит, оно вам возвращает то что находит в первой строчке вашего файла.
Поскольку в первой строчке оно у вас возвращает пустой список (там не ни одного соответсвия шаблону),
то и возвращает оно вам пустую строку.
Ставте проверку, чтоли, что re.findall чтото нашло и только тогда делайте return.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 2, 2017 15:03:05)

Офлайн

#5 Окт. 2, 2017 16:55:20

P_N
Зарегистрирован: 2016-02-09
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не возвращает значение

Наверняка не оптимально, но вроде работает:

 from __future__ import print_function
import re, sys, os, io
myFile="e://search.txt"
def searchStr(myFile):
    with io.open(myFile, encoding='utf-8') as f:
        head=[next(f) for x in range(5)]
        for i in head:
            res=re.search('From:.*<*>', i)
            if not res:
                continue
            res.span()
            mail=i[res.start():res.end()]
        return mail
searchStr(myFile)
j=searchStr(myFile)
print(j[7:-1])
Если видны какие-то очевидные замечания- буду признателен

Офлайн

#6 Окт. 2, 2017 18:41:52

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Не возвращает значение

 >>> s='''dgfhgfhgfh gfhgfh gfhgfhfg 
hgfh ghfgh From: <ivanov@domain.ru>
gfdfgfd
fgdfgdf
fgdfgdffg for: <it@domain.ru>
gtdfgdf
fgdfgdfg
fgdfgdfg
fgdfgdfgd
'''
>>> lst = re.findall('From:.*<*>',s)
>>> for i in lst:
	print(i.split('<')[-1][:-1])
	
ivanov@domain.ru
>>> 

Отредактировано vic57 (Окт. 2, 2017 18:42:30)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version