'Python抛出ValueError: 不在列表中,尽管它在列表中'

2024-10-02 08:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过在Python中导入CSV文件来填充元组。现在,当我试图获取该元组中某个值的索引时,它给出Value error: is not in list,尽管该值存在。下面是我与示例数据一起使用的代码。 以下是csv的内容

IsNonPO,ApprovedState,ApprovalRecords/0/Comment,ApprovalRecords/0/Comment.Date

我使用以下代码

import csv
flist = [tuple(row) for row in csv.reader(open('D:\\result_IV.csv', 'rU'))]
print (flist)
x = flist.index('IsNonPO')
print(x)

下面是我得到的输出

^{pr2}$

Tags: 文件csv代码inisvaluecommenterror
2条回答

你没有遵循你的数据结构。在

根据你的代码,你得到的是元组的列表。每个元组表示一行,每个元组项表示csv中的一个值。在

所以

IsNonPO,ApprovedState,ApprovalRecords/0/Comment,ApprovalRecords/0/Comment.Date

你应该得到

^{pr2}$

(注意结尾]后缺少)。在

因此,实际上,列表并不包含给定的字符串,而是包含具有给定字符串的元组。在

一种方法是

n, val = next((n, i) for n, i in enumerate(flist) if 'IsNonPO' in i)

它提供了第一个包含'IsNonPO'的项(和元组)。在

然后您可以继续获取该元组中'IsNonPO'的索引。在

当然,这取决于你真正想要实现什么。如果总是只有一行,yashjain12yj's answer也可以。在

这里的问题是,您在元组中解析CSV内容,然后将该元组存储在列表中。在

    flist = [('IsNonPO', 'ApprovedState', 'ApprovalRecords/0/Comment','ApprovalRecords/0/Comment.Date')]

所以要访问第一行,请使用flist[0]

然后,要获取元组中某个值的索引,请使用:

^{pr2}$

只需将第10行改为:

    x = flist[0].index('IsNonPO')

相关问题 更多 >

    热门问题