我想创建一段代码来拉取标题并链接RSS源并将其编译成一个变量,然后可以在消息体中使用。我的问题是每次我从RSS中提取信息时都会重新定义Body。我是编程和python的新手,我觉得使用列表是最好的事情。
for i in range(3):
MessageTitle = feed['items'][i].title
MessageLink = " - ",feed['items'][i]['link']
Body = "%s%s%s%s" % (MessageTitle,"\n","\n", MessageLink) #in unicode
gmail_user = "user@gmail.com"
gmail_pwd = "pw"
mail("user@gmail.com",
"Reddit Update",
Body)
我打算在body下面插入列表,并使用body来定义它..类似于:
list[i] = [Body]
我是在正确的轨道上吗?
答案 0 :(得分:3)
您可以考虑使用各种设计模式。我将演示一些您不需要使用[i]
甚至:
累加器:
messages = []
for feedItem in feed['items']:
message = {'title':..., ...}
message['link'] = ... # alternative
messages += [message] # or messages.append(data)
print(messages)
映射(在这种简单的情况下通常是最优雅的解决方案):
def makeMessage(feedItem):
message = {'title':..., ...}
return message
messages = [makeMessage(fi) for fi in feed['items']]
print(messages)
发生器:
def makeMessages(feedItems):
for item in feedItems:
message = {'title':..., ...}
yield message
messages = list( makeMessages(feed['items']) )
无关的附录: 您甚至可以考虑为您的消息制作课程:
class Message(object):
def __init__(self, title, link, body):
self.title = title
self.link = link
self.body = body
def __str__(self):
return ...
def __repr__(self):
return self.__str__()