Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python抛出ValueError:不在列表中,尽管它在列表中_Python - Fatal编程技术网

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

Python抛出ValueError:不在列表中,尽管它在列表中,python,Python,我通过导入Python中的CSV文件来填充元组。现在,当我尝试获取该元组中某个值的索引时,它给出了值error:不在列表中,尽管该值存在。下面是我正在使用的代码以及示例数据。 以下是csv的内容 IsNonPO,ApprovedState,ApprovalRecords/0/Comment,ApprovalRecords/0/Comment.Date 我正在使用以下代码 import csv flist = [tuple(row) for row in csv.reader(open('D:\\

我通过导入Python中的CSV文件来填充元组。现在,当我尝试获取该元组中某个值的索引时,它给出了值error:不在列表中,尽管该值存在。下面是我正在使用的代码以及示例数据。 以下是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)
下面是我得到的输出

 [('IsNonPO', 'ApprovedState', 'ApprovalRecords/0/Comment','ApprovalRecords/0/Comment.Date']
File "C:/Users/abc/PycharmProjects/Default/first.py", line 10, in <module>
 x = flist.index('IsNonPO')
ValueError: 'IsNonPO' is not in list

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

    flist = [('IsNonPO', 'ApprovedState', 'ApprovalRecords/0/Comment','ApprovalRecords/0/Comment.Date')]
因此,要访问第一行,请使用flist[0]

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

    flist[0].index('IsNonPO')
只需将第10行更改为:

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

您没有遵循您的数据结构

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

所以

IsNonPO,ApprovedState,ApprovalRecords/0/Comment,ApprovalRecords/0/Comment.Date
你应该

[('IsNonPO', 'ApprovedState', 'ApprovalRecords/0/Comment','ApprovalRecords/0/Comment.Date')]
请注意关闭后的缺失]

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

一种方法可以是

n, val = next((n, i) for n, i in enumerate(flist) if 'IsNonPO' in i)
这将为您提供第一个项和包含“IsNonPO”的元组

然后,您可以继续获取该元组中“IsNonPO”的索引


当然,这取决于你真正想要实现什么。如果你总是只有一行,也会工作。

可能不是直接相关的,但是也许你应该考虑加载和处理你的文件如下:用Open'YouthField.CSV作为文件:行= tuple [f.脱衣舞分裂,F文件中]。然后,要获取某个值的索引,可以执行类似于第[0]行的操作