我的電子郵件地址有問題,稍作更正后,它們可以轉換為有效的電子郵件地址。
例如:
[email protected], --- Not valid
'[email protected], --- Not valid
([email protected]), --- Not valid
([email protected]), --- Not valid
:[email protected], --- Not valid
//[email protected] --- Not valid
[email protected] --- valid
...
我可以寫“ifelse”,但如果新的電子郵件地址出現新問題,我需要寫“ifelse”并每次更新。
清理所有這些小問題、一些 python 包或正則運算式的最佳方法是什么?請建議。
uj5u.com熱心網友回復:
你可以這樣做(我基本上檢查電子郵件中的元素是字母字符還是點,如果不是,則洗掉它們):
emails = [
'[email protected]',
'([email protected])',
'([email protected])',
':[email protected]',
'//[email protected]',
'[email protected]'
]
def correct_email_format(email):
return ''.join(e for e in email if (e.isalnum() or e in ['.', '@']))
for email in emails:
corrected_email = correct_email_format(email)
print(corrected_email)
輸出:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
uj5u.com熱心網友回復:
資料清理很混亂,但我發現定義一組規則的方法是一種簡單的管理方法(規則的順序很重要):
rules = [
lambda s: s.replace(' ', ' '),
lambda s: s.strip(" ,'"),
]
addresses = [
' [email protected],',
'[email protected],'
]
for a in addresses:
for r in rules:
a = r(a)
print(a)
這是結果輸出:
[email protected]
[email protected]
確保您撰寫了一個涵蓋無效和有效資料的測驗套件。這很容易打破,你可能經常調整規則。
雖然我將 lambda 用于上述規則,但它可以是接受并回傳字串的任意復雜函式。
uj5u.com熱心網友回復:
如果您有更多不同的測驗用例,例如[email protected].、,,[email protected].@_)或,這實際上是一個復雜的問題[email protected]@@@。不過,您可以剝離它們,但不能僅限于在結尾和開頭要剝離的內容。
注意:帶有數字和 _ 的電子郵件地址也有效。
emails = [
'[email protected]',
'([email protected])',
'([email protected])',
':[email protected]',
'//[email protected]',
'[email protected]'
]
def clean(email):
return ''.join(filter(lambda x: ord(x) >= 65 or x in ['.', '@', '_'], email))
for email in emails:
print(clean(email))
輸出:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/504290.html
