2016-05-25 4 views
2

私は空のリストとループを持っています。ループの結果は、空のリストに追加されます。 )(リスト内の各項目の後のPython - 改行

list = [] 

def function_name(): 
    for item in items: 
     r = requests.get(item) 
     results = r.status_code, r.url 
     print(results, time.strftime('%Y-%m-%d')) 
     for s_code in results: 
      list.append(s_code) 

    msg = str(list) 
    subject = 'Hello' 
    sender = '[email protected]' 
    recepient = '[email protected]' 

    s = smtplib.SMTP('localhost') 
    s.sendmail('[email protected]', '[email protected]', msg) 
    s.quit() 

check_broken_links:リストは、私に電子メールで送信されますが、それは私がこのリストがそうのようにフォーマットされたい['item1', 'item2]の形式で提供されます:

item1 
item2 

私のコードは次のようになります

私はstrを削除し、msg = '\n'.join(list)を行うとを残すこのラインresults = r.status_code, r.urlに見られるように、私はintstrを組み合わせていますので、私はエラーを取得しますはすべてのiterableを1行に返すので、どちらもうまくいきません。

ps 私のメール機能ではまだ動作していますが、それは少しばかりですが、送信します。

+2

あなたはanotheを使用することができますr各項目をループして印刷します。 –

+0

実際に電子メールを送信するコードとは何ですか?リストの内容を電子メールに1つずつ追加する必要があります。単純にリストを文字列に変換するのではなく、一度に1つの項目に追加する必要があります。 – chepner

+3

または、[** 'str.join' **](https://docs.python.org/3/library/stdtypes.html#str.join):' '\ n' .join(codes) ' –

答えて

1

変換するリスト内包を実行して、数字のリストにstr.joinを解決するには、次の

msg = '\n'.join([str(i) for i in list]) 
+0

これはやっているようです。ありがとうございました。 – Freddy

4

あなたは、電子メールのテキストを構築し、あなたがHTML形式の電子メールを送信している場合は、この

text = '<br/>'.join(list) 
を行う必要があり、この

text = '\n'.join(list) 

のような改行を文字列にリストを変換します

+2

HTML版では、実際には ''
'.join(map(cgi.escape、my_list)) 'にする必要があります。 –

+0

シナリオをより明確にするために私のコードをすべて追加しました。 – Freddy

関連する問題