2012-11-12 108 views
0

此應用程序將下載一個網頁,並在頁面的文本中找到所有的電子郵件地址,並返回它們的列表。列表而不是列表的列表意外返回

這是我當前的代碼:

def emails(content): 
'return list of email addresses contained in string content' 
    email = [] 
    content = urlopen(url).read().decode() 
    pattern='[A-Za-z0-9_.]+\@[A-Za-z0-9_.]+\....' 
    email.append(re.findall(pattern,content)) 
    print(email) 

但出於某種原因,我得到:的

[['[email protected]"']] 

代替:

['[email protected]'] 
+0

只是幾個一般的建議:(1)現在,你的代碼不會返回一個電子郵件地址列表,它會打印它們並返回None。要返回它們,請執行'返回電子郵件'。 (2)在使用之前,您並不需要將電子郵件設置爲空列表。事實上,你可以'返回re.findall(模式,內容)',甚至不需要'email'變量。 (3)你的函數將'content'作爲參數,但是看起來你應該把'url'作爲你的參數。只是我的兩分錢。 :-) –

回答

5

re.findall實際上返回一個列表,讓你將一個列表附加到列表中。如果你不想要那樣的行爲,你可以做一些類似email.extend(re.findall(pattern,content))的事情(雖然我通常在自己的生產線上檢查匹配,以確保找到匹配,並且不匹配得到正確處理)。

+0

會做。謝謝。 –

+0

@JasonSchayer沒問題,希望它有幫助。 – RocketDonkey