如何解决:“列表索引必须是整数或切片,而不是str”

时间:2019-09-19 17:52:42

标签: python string for-loop integer

我是python的新手,仍然在学习它,我正在尝试制作一个将电子邮件发送到多封电子邮件的脚本,但是我对此有问题。它继续在第9行打印出错误:

“列表索引必须是整数或切片,而不是str”

我对这意味着什么以及我需要做什么来解决这个问题感到困惑。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

email_list = ["First@email.com", "second@email.com", "third@email.com", "etc..."]

num = 0
for i in email_list:
    msg['To'] = email_list[i] #this line gives the error
    num = num + 1
    server.sendmail(email, email_list[i], text)

print("Emails Sent: " + num)

我希望输出为“已发送的电子邮件”:3,但不会大笑

1 个答案:

答案 0 :(得分:1)

在python中,for e in collections必须读为“对于集合中的每个元素e”,这意味着e会使用集合中每个元素的值。

在您的示例中,i将使用值“ First@email.com”,然后是“ second@email.com”等。而不是您似乎认为的0、1...。 但是,当您执行email_list[i]时,您试图获取列表的第i个值。由于我们看到i是一个字符串,因此无法使用。