Python抛出ValueError:不在列表中,尽管它在列表中
我通过导入Python中的CSV文件来填充元组。现在,当我尝试获取该元组中某个值的索引时,它给出了值error:不在列表中,尽管该值存在。下面是我正在使用的代码以及示例数据。 以下是csv的内容 IsNonPO,ApprovedState,ApprovalRecords/0/Comment,ApprovalRecords/0/Comment.Date 我正在使用以下代码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:\\
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]行的操作