【发布时间】:2017-01-27 20:51:30
【问题描述】:
我有一个脚本可以通过电子邮件向我发送指向我的链接。
问题是链接不包括在内,而是我得到:
<function <lambda> at 0x7f75b5fb4a60>
我的脚本如下所示:
from bs4 import BeautifulSoup
import re
import requests
ex_webdev_js_by_city = [
'http://boston.website.org/search/web',
]
ex_web_j_keywords = [['one'],['coool', 'person']]
ex_web_j_keywords = sum(ex_web_j_keywords, [])
ex_js = []
for webdev_j_for_a_city in ex_webdev_js_by_city:
webdev_j = requests.get(webdev_j_for_a_city)
soup = BeautifulSoup(webdev_j.text, "lxml")
for j_keyword in ex_web_j_keywords:
for a in soup.find_all('a', class_="result-title hdrlnk", text=re.compile(j_keyword,re.IGNORECASE)):
#print(a.get('href'))
ex_js.append(a.get('href'))
if ex_js:
#email them to myself!
import smtplib, socket
TO = 'myemail@gmail.com'
try:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
TEXT = lambda: print(('Latest js from site:\n\n{}'*len(ex_js)).format(*ex_js))
#Gmail Sign In
gmail_sender = 'myemail'
gmail_passwd = 'mypass'
server.login(gmail_sender, gmail_passwd)
msg = str(TEXT)
server.sendmail(gmail_sender, gmail_sender, msg)
print('Sent you some links!')
server.quit()
except socket.error as e:
print ('error sending mail, error was {}'.format(e))
此行发生错误(我相信):
lambda: print(('Latest js from site:\n\n{}'*len(ex_js)).format(*ex_js))
它似乎在给我的电子邮件中打印出object details,而不是value。
那么,我在这里可能做错了什么?
【问题讨论】:
-
首先,值是
None,因为您“返回”了print语句,其次,您为什么使用lambda? -
lambda函数没有做任何事情,因为它从未被调用过。
标签: python python-3.x lambda output