【问题标题】:Python - line break after each item in a list [closed]Python - 列表中每个项目后的换行符[关闭]
【发布时间】:2016-05-25 19:29:14
【问题描述】:

我有一个空列表和一个循环。循环的结果附加到空列表中。该列表随后会通过电子邮件发送给我,但格式为 ['item1', 'item2] 我希望此列表的格式如下:

item1
item2

我的代码如下所示:

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 = 'me@example.com'
    recepient = 'you@example.com'

    s = smtplib.SMTP('localhost')
    s.sendmail('address1@example.com', 'address2@example.com', msg)
    s.quit()

check_broken_links()

当我删除 str 并执行 msg = '\n'.join(list) 时,我收到一个错误,因为我正在组合 intstr,如在这一行中看到的 results = r.status_code, r.url 离开 str 在一行中返回每个可迭代,所以这就是也不好。

ps 还在处理我的邮件功能,有点马虎,但可以发送。

【问题讨论】:

  • 您可以使用另一个循环并打印每个项目。
  • 实际通过电子邮件发送列表的代码是什么?它应该一次将列表的内容附加到电子邮件中,而不是简单地将列表转换为字符串。
  • 或使用str.join:'\n'.join(codes)
  • 您需要显示其余代码。
  • 编辑问题以显示所有代码

标签: python python-2.7 loops


【解决方案1】:

当您为电子邮件构建文本时,将列表转换为带有换行符的字符串,如下所示

text = '\n'.join(list)

如果您要发送 html 电子邮件,您可能必须这样做

text = '<br/>'.join(list)

【讨论】:

  • 对于HTML版本,实际上应该是'&lt;br&gt;'.join(map(cgi.escape, my_list))
  • 我刚刚添加了所有代码以使场景更清晰
【解决方案2】:

要解析数字列表中的str.join,请运行列表推导进行转换:

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

【讨论】:

  • 这似乎可以解决问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
相关资源
最近更新 更多