Найти - Пользователи
Полная версия: Не возвращает значение
Начало » Python для новичков » Не возвращает значение
1
P_N
Доброе время.
 # -*- 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)
Хочу найти е-мейл. Текстовый файл существует, е-мейл в функции находит, а получить его в основную программу не молучается. Подскажите, пожалуйста, где исправить? Заранее спасибо.
PEHDOM
Даже если опустить ненужность там global findmail, где файл из которого оно должно вытянуть емейл?
P_N
файл есть, лежит по указанному пути: e:\search.txt

dgfhgfhgfh gfhgfh gfhgfhfg
hgfh ghfgh From: <ivanov@domain.ru>
gfdfgfd
fgdfgdf
fgdfgdffg for: <it@domain.ru>
gtdfgdf
fgdfgdfg
fgdfgdfg
fgdfgdfgd
PEHDOM
P_N
е-мейл в функции находит
Нифига оно не находит, оно вам возвращает то что находит в первой строчке вашего файла.
Поскольку в первой строчке оно у вас возвращает пустой список (там не ни одного соответсвия шаблону),
то и возвращает оно вам пустую строку.
Ставте проверку, чтоли, что re.findall чтото нашло и только тогда делайте return.
P_N
Наверняка не оптимально, но вроде работает:
 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])
Если видны какие-то очевидные замечания- буду признателен
vic57
 >>> 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
>>> 
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB