Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python验证电子邮件不';从MongoDB拉车时无法工作_Python_Mongodb_Python 2.7 - Fatal编程技术网

Python验证电子邮件不';从MongoDB拉车时无法工作

Python验证电子邮件不';从MongoDB拉车时无法工作,python,mongodb,python-2.7,Python,Mongodb,Python 2.7,基本上,如果我创建一个字符串数组并使用方法遍历该数组。。。一切都很完美 但是,如果我从数据库中获取它们。。。。即使我已经检查了类型,甚至打印了电子邮件到控制台。。。它仍然显示未通过验证的电子邮件,即使我将其作为字符串手动执行,也可以正常工作 import pymongo import validate_email import unicodedata from pymongo import MongoClient from validate_email import validate_email

基本上,如果我创建一个字符串数组并使用方法遍历该数组。。。一切都很完美

但是,如果我从数据库中获取它们。。。。即使我已经检查了类型,甚至打印了电子邮件到控制台。。。它仍然显示未通过验证的电子邮件,即使我将其作为字符串手动执行,也可以正常工作

import pymongo
import validate_email
import unicodedata
from pymongo import MongoClient
from validate_email import validate_email
# Mongo Info
client = MongoClient('localhost', 27017)
db = client.EmailList
emails = db.Emails

emailsToVerify = ['harry@mail.com', 'buzzard@gmail.com', 'frank@Einstein.com']

def verifyEmail(emailToVerify):
    for item in emailToVerify:
        print validate_email(item)

def grabTenEmails():
    i = 0

    for email in emails.find():
        if i < 3:
            i += 1
            # encode('utf8')
            uEmail =  str(email['email'])
            print(uEmail + ' has type ' + str(type(uEmail)))
            emailsToVerify.append(uEmail)

# collection.remove({"email": uEmail})
print('Grabbing ten emails...')
grabTenEmails()
verifyEmail(emailsToVerify)

您在电子邮件字符串的末尾有一个新行字符(即
\r
内容)。用以下材料将其切碎:

uEmail =  str(email['email']).strip()
或:


似乎validate_电子邮件无法正常工作,只是检查了确切的地址部分;您可能希望首先使用stdlib函数清理邮件

导入email.utils >>>email.utils.parseaddr('aRealEmail@yahoo.com\r') ('', 'aRealEmail@yahoo.com') >>>email.utils.parseaddr(“比尔·盖茨”) (‘比尔·盖茨’,’billyboy@hotmail.com')
我没有mongodb(为了回答这个问题),你介意用
uEmail的输出更新这个问题吗?
。。。它现在起作用了。。。idk wtfWell。。。Stackoverflow有时用作一个函数。:-)好吧,对不起,不是。。。它正在响应我的自定义数组。我看到了
verifyEmail()
的结果,因为它是一个定制的stringsAdded输出数组requestedGlad,非常有用。print语句很棘手,因为一些空白字符将不明显,
\uuuu repr\uuu()
方法在调试字符串时很有用。好主意。我也同意图书馆不是最好的。希望它能真正起作用!例如,从技术上讲,
“比尔·盖茨”
是一个电子邮件地址,而不仅仅是括号中的部分。不过最酷的是,你可以将它们的名字分开,然后动态地将其用于你正在创建的任何东西。比如
Hello[[name]],
或者其他什么。
uEmail =  str(email['email']).strip()
print validate_email(item.strip())
>>> import email.utils
>>> email.utils.parseaddr('aRealEmail@yahoo.com\r')
('', 'aRealEmail@yahoo.com')
>>> email.utils.parseaddr('Bill Gates <billyboy@hotmail.com>')
('Bill Gates', 'billyboy@hotmail.com')