我有一個關於10.000長的電子郵件列表,與不完整的電子郵件ID,由於數據不可靠,並想知道如何使用Python完成它們。完整的電子郵件使用Python
樣本電子郵件:
[email protected]
XYZ @ gmail的。
XYZ @ GMA
XYZ @摹
我一直在使用validate_email
包過濾掉不良郵件嘗試和嘗試了各種正則表達式模式和我結束了[email protected]
類似的搜索和使用文本崇高更換。我認爲有一個比正則表達式更好的方法,並希望知道。
我有一個關於10.000長的電子郵件列表,與不完整的電子郵件ID,由於數據不可靠,並想知道如何使用Python完成它們。完整的電子郵件使用Python
樣本電子郵件:
[email protected]
XYZ @ gmail的。
XYZ @ GMA
XYZ @摹
我一直在使用validate_email
包過濾掉不良郵件嘗試和嘗試了各種正則表達式模式和我結束了[email protected]
類似的搜索和使用文本崇高更換。我認爲有一個比正則表達式更好的方法,並希望知道。
要考慮的策略是爲您的域創建「trie」數據結構,例如gma
和gmail.co
。然後,在域名是其他域名的前綴的情況下,如果存在唯一的此類分支,則可以考慮沿線索的較長分支。這將意味着在您的示例中最終將替換gma
與gmail.co
。
有一個關於how to create a trie in Python的答案。
def email_check():
fo = open("/home/cam/Desktop/out.dat", "rw+") #output file
with open('/home/cam/Desktop/email.dat','rw') as f:
for line in f:
at_pos=line.find('@')
if line[at_pos + 1] == 'g':
line=line[:at_pos+1]+'gmail.com'
elif line[at_pos +1] == 'y':
line=line[:at_pos+1]+'yahoomail.com'
elif line[at_pos + 1] == 'h':
line=line[:at_pos+1]+'hotmail.com'
fo.write(line)
fo.write('\n')
f.close()
email_check()
如果任何一個圖書館解決了OOTB,我會感到驚訝 - 這看起來像是一個非常本地化的問題。 – d33tah
該代碼如何決定是否將'xyx @ g'完成爲'@ gmail'或'@ gotmail'? – Lix
好的,我同意。你怎麼認爲我們可以解決這個問題。 – Nikhil