Arrays Python3数组返回值
其他python程序员 我一直在开发一个小工具,它可以帮助自动化一些重复任务的电子邮件分发 我正在编写一个函数,它包含一个项目列表,我正在剥离电子邮件中的用户名,将其与CSV文件匹配,并查找与该用户相关的电子邮件 我成功地获得了我需要的所有信息,但是我试图返回一个数组中的数据,该数组是一个包含3列的列表,看起来应该是这样的 [参考#,用户,电子邮件, 参考#,用户,电子邮件] 下面是我尝试过的代码,但它只返回一个满是零的数组Arrays Python3数组返回值,arrays,python-3.x,Arrays,Python 3.x,其他python程序员 我一直在开发一个小工具,它可以帮助自动化一些重复任务的电子邮件分发 我正在编写一个函数,它包含一个项目列表,我正在剥离电子邮件中的用户名,将其与CSV文件匹配,并查找与该用户相关的电子邮件 我成功地获得了我需要的所有信息,但是我试图返回一个数组中的数据,该数组是一个包含3列的列表,看起来应该是这样的 [参考#,用户,电子邮件, 参考#,用户,电子邮件] 下面是我尝试过的代码,但它只返回一个满是零的数组 def gu(tids): data = [[0 for i
def gu(tids):
data = [[0 for i in range(len(tids))] for j in range(1)]
#In each ticket, splice out the username
for tid in tids:
#print(tid.Subject)
su = tid.Body.find("from ") + 5
eu = tid.Body.find(" has")
u = tid.Body[su:eu]
with open('c:\\software\\users_and_emails.csv', "r") as f:
reader = csv.reader(f)
for k, row in reader:
if u.lower() == row[0].lower():
#print(row)
tidSubject = tid.Subject[30:-1]
data[k][0] = tidSubject
data[k][1] = row[0]
data[k][2] = row[1]
return data
无论出于何种原因,它都会返回一个适当长度的空数组
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
有人能帮我理解为什么它没有返回正确的值吗
下面的代码不在数组中存储值,而是打印出适当的值
def gu(tids):
data = [[0 for i in range(len(tids))] for j in range(1)]
#In each ticket, splice out the username
for tid in tids:
#print(tid.Subject)
su = tid.Body.find("from ") + 5
eu = tid.Body.find(" has")
u = tid.Body[su:eu]
with open('c:\\software\\users_and_emails.csv', "r") as f:
reader = csv.reader(f)
for row in reader:
if u.lower() == row[0].lower():
#print(row)
tidSubject = tid.Subject[30:-1]
#data[i][0] = tidSubject
#data[i][1] = row[0]
#data[i][2] = row[1]
print(tidSubject)
print(row[0])
print(row[1])
#print(i)
#return data
它返回的数据与此类似(抱歉,必须掩盖实际返回)
试试这个
def gu(tids):
data = []
#In each ticket, splice out the username
for tid in tids:
#print(tid.Subject)
su = tid.Body.find("from ") + 5
eu = tid.Body.find(" has")
u = tid.Body[su:eu]
with open('c:\\software\\users_and_emails.csv', "r") as f:
reader = csv.reader(f)
for row in reader:
if u.lower() == row[0].lower():
#print(row)
tidSubject = tid.Subject[30:-1]
subject = tidSubject
row0 = row[0]
row1 = row[1]
data.append([subject, row0, row1])
return data
对于k,读卡器中的行:
仅在csv文件有2列时有效(并解包)。我不确定这是不是你的意思。因为在那之后,如果u.lower()==行[0]。lower():
与行的第一个字母比较。。。误导性。为什么要在第2行填充数据?在做了一些研究之后,我认为我需要在填充数组之前构造数组的维度,这就是我所做的。@Jean-Françoisfare csv确实有2列,但这不是我想要建立数组的基础。基本上,我需要在匹配csv后从csv中获取项目,并将其与“tids”变量提供的数据一起存储在一个新数组中。这更接近,但它不会对csv中的每一行进行迭代。它在列表中的第一项之后停止。@Justin请确保在列表的第一项之后返回“数据”loop@Justin没问题
def gu(tids):
data = []
#In each ticket, splice out the username
for tid in tids:
#print(tid.Subject)
su = tid.Body.find("from ") + 5
eu = tid.Body.find(" has")
u = tid.Body[su:eu]
with open('c:\\software\\users_and_emails.csv', "r") as f:
reader = csv.reader(f)
for row in reader:
if u.lower() == row[0].lower():
#print(row)
tidSubject = tid.Subject[30:-1]
subject = tidSubject
row0 = row[0]
row1 = row[1]
data.append([subject, row0, row1])
return data