Arrays Python3数组返回值

Arrays Python3数组返回值,arrays,python-3.x,Arrays,Python 3.x,其他python程序员 我一直在开发一个小工具,它可以帮助自动化一些重复任务的电子邮件分发 我正在编写一个函数,它包含一个项目列表,我正在剥离电子邮件中的用户名,将其与CSV文件匹配,并查找与该用户相关的电子邮件 我成功地获得了我需要的所有信息,但是我试图返回一个数组中的数据,该数组是一个包含3列的列表,看起来应该是这样的 [参考#,用户,电子邮件, 参考#,用户,电子邮件] 下面是我尝试过的代码,但它只返回一个满是零的数组 def gu(tids): data = [[0 for i

其他python程序员

我一直在开发一个小工具,它可以帮助自动化一些重复任务的电子邮件分发

我正在编写一个函数,它包含一个项目列表,我正在剥离电子邮件中的用户名,将其与CSV文件匹配,并查找与该用户相关的电子邮件

我成功地获得了我需要的所有信息,但是我试图返回一个数组中的数据,该数组是一个包含3列的列表,看起来应该是这样的 [参考#,用户,电子邮件, 参考#,用户,电子邮件]

下面是我尝试过的代码,但它只返回一个满是零的数组

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