2011-05-10 5 views
0

나는 RSS 피드의 제목과 링크를 가져 와서 메시지 본문에서 사용할 수있는 변수로 컴파일하는 코드를 만들고 싶습니다. 내 문제는 내가 RSS에서 정보를 가져올 때마다 본문이 다시 정의됩니다. 나는 프로그래밍과 파이썬에 아주 익숙하지 않은데, 목록을 사용하는 것이 최선의 방법이라고 인상을 받고있다.끊임없이 변화하는 변수를 사용하여 목록을 정의하기

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 = "[email protected]" 
    gmail_pwd = "pw" 

    mail("[email protected]", 
     "Reddit Update", 
     Body) 

내가 .. 같은 몸 아래 목록을 삽입하여 정의 몸을 사용하는 거라고 :

list[i] = [Body] 

내가 바른 길에 오전?

+2

당신은 "%의 %의 %의 %의"% (MessageTitle'변경을 고려 할 수 있습니다, "\ n", " \ n ", MessageLink)'를"% s \ n \ n % s "% (MessageTitle, MessageLink)'로 변경하십시오. – icktoofay

답변

3

사용할 수있는 다양한 디자인 패턴이 있습니다.

배터리 : (종종이 같은 간단한 경우에서 가장 우아한 해결책)

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) 

당신도 [i]를 사용할 필요가 없습니다 어디 몇 가지를 선보일 예정 발전기 :

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__() 
관련 문제