[英]String Index Out of Range
我正在使用 Pandas 並將信息從 excel 提取到列表中,這部分效果很好,我的列表又回來了,我可以很好地打印出來,沒有 NaN 或錯誤。
但是,當我遍歷它們時,我遇到了字符串索引在第一次迭代后超出范圍的問題,或者當 itr 為 1 時,因為它打印第一個就好了,然后在site = site[itr]
行出現錯誤。
由數值組成的站點數組或列表(如果您願意)。 我得到了從 excel 中提取的行數作為稱為 toSend 的索引限制器。
我添加了site = [str(i) for i in site]
因為我收到了 int 對象不可下標的錯誤。
我不確定我在哪里左轉,非常感謝任何幫助。
******* 根據要求更新為 MRE *******
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import pandas as pd
import time
name = ['Michael Jordan', 'General Clark', 'Tony Tiger', 'Alvin Chipmunk', 'Daffy Duck']
eMail = ['thebulls@bull.com', 'general@insurance.com', 'tiger@post.com', 'alvin@chipmunk.com', 'duck@goose.com']
site = [1, 3, 5, 6, 9]
site = [str(i) for i in site]
toSend = 5
print("Count is " + str(toSend))
print("Starting up... Excel Read")
print(name)
print(site)
print(eMail)
time.sleep(2)
itr = 0
for itr in range(toSend):
print(str(itr))
name = name[itr]
eMail = eMail[itr]
site = site[itr]
print("\nWe will be sending an email statements to " + str(name) + "\nfor site " + str(site) + "\nat email address "+ str(eMail) + "\n")
itr = int(itr) + 1
print("Listing Completed")
更新:
這是因為您正在覆蓋變量。
所以name
以數組開頭:
name = ['Michael Jordan', 'General Clark', 'Tony Tiger', 'Alvin Chipmunk', 'Daffy Duck']
循環1, name
變成字符串(idx = 1)
name = 'Michael Jordan'
循環2, name
變成單字母字符串(idx = 2)
name = 'i'
循環 2, name
嘗試從單個字母字符串中獲取位置 3,因此字符串索引超出范圍 (idx = 3)
固定示例:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import pandas as pd
import time
name = ['Michael Jordan', 'General Clark', 'Tony Tiger', 'Alvin Chipmunk', 'Daffy Duck']
eMail = ['thebulls@bull.com', 'general@insurance.com', 'tiger@post.com', 'alvin@chipmunk.com', 'duck@goose.com']
site = [1, 3, 5, 6, 9]
site = [str(i) for i in site]
toSend = 5
print("Count is " + str(toSend))
print("Starting up... Excel Read")
print(name)
print(site)
print(eMail)
time.sleep(2)
itr = 0
for itr in range(toSend):
print(str(itr))
loop_name = name[itr]
loop_eMail = eMail[itr]
loop_site = site[itr]
print("\nWe will be sending an email statements to " + str(loop_name) + "\nfor site " + str(loop_site) + "\nat email address "+ str(loop_eMail) + "\n")
print("Listing Completed")
- 老的 -
只需將代碼修改為 for 循環,這將減少所需的邏輯並使調試更容易。
name = sI["Name"].values.tolist()
eMail = sI["MailAddress"].values.tolist()
site = sI["MailSite"].values.tolist()
site = [str(i) for i in site]
toSend = sI["Count"].values
print("Count is " + str(toSend))
print("Starting up... Excel Read")
print(name)
print(site)
print(eMail)
time.sleep(2)
itr = 0
for itr in range(len(toSend)):
print(str(itr))
name = name[itr]
eMail = eMail[itr]
site = site[itr]
print("We will be sending an email statements to " + str(name) + "\nfor site " + str(site) + "\nat email address "+ str(eMail))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.