如何通过python在csv文件中查找具有已知列号的特定值的行号
我正在解决一个问题,创建一个函数find_row,其中包含三个输入参数-文件名、列号和值。我希望输出如给定示例所示: 例如,如果我们有一个文件a.csv:如何通过python在csv文件中查找具有已知列号的特定值的行号,python,csv,row,Python,Csv,Row,我正在解决一个问题,创建一个函数find_row,其中包含三个输入参数-文件名、列号和值。我希望输出如给定示例所示: 例如,如果我们有一个文件a.csv: 1, 1.1, 1.2 2, 2.1, 2.2 3 4, 4.1, 4.2 然后 打印(查找行('a.csv',0,4))将打印3 打印(find_row('a.csv',2,2.2))将打印1,和 打印(find_row('a.csv',0,100))将不打印任何内容 我尝试的代码是: import csv def fin
1, 1.1, 1.2
2, 2.1, 2.2
3
4, 4.1, 4.2
然后
打印(查找行('a.csv',0,4))将打印3
打印(find_row('a.csv',2,2.2))将打印1,和
打印(find_row('a.csv',0,100))将不打印任何内容
我尝试的代码是:
import csv
def find_row(filename,col_number,value):
var = str(value)
coln = str(col_number)
o = open(filename, 'r')
myData = csv.reader(o)
index = 0
for row in myData:
if row[col_number] == var:
return index
else :
index+=1
print find_row('a.csv',2,2.2)
这是一个错误:
File "C:/Users/ROHIT SHARMA/Desktop/1.py", line 17, in find_row
if row[col_number] == var:
IndexError: list index out of range
我现在理解了错误,但无法改进代码。有人来帮忙吗
谢谢。在您的CSV文件中,第三行只有一列,因此2不是有效的索引 顺便说一句,这样做更干净
for index, row in enumerate(myData):
if row[col_number] == var:
return index
编辑:而且,CSV会给你带来问题。它找不到'2.2',因为它实际上返回'2.2'。在阅读时去掉空格,或者确保CSV以“正确”的方式保存(逗号和内容之间没有空格)
Edit2:如果您必须有一个行不相等的CSV,这将实现以下技巧:
for index, row in enumerate(myData):
try:
if row[col_number] == var:
return index
except IndexError:
pass
在CSV文件中,第三行只有一列,因此2不是有效的索引 顺便说一句,这样做更干净
for index, row in enumerate(myData):
if row[col_number] == var:
return index
编辑:而且,CSV会给你带来问题。它找不到'2.2',因为它实际上返回'2.2'。在阅读时去掉空格,或者确保CSV以“正确”的方式保存(逗号和内容之间没有空格)
Edit2:如果您必须有一个行不相等的CSV,这将实现以下技巧:
for index, row in enumerate(myData):
try:
if row[col_number] == var:
return index
except IndexError:
pass
仍然抛出相同的错误。csv文件没有空格。在这里粘贴时,示例中有空格。我在2.7和3.5版本中都进行了测试,效果很好。你能把你当前的代码放到一个粘贴箱里,我来看看吗?还是抛出同样的错误。csv文件没有空格。在这里粘贴时,示例中有空格。我在2.7和3.5版本中都进行了测试,效果很好。你能把你当前的代码放在一个粘贴箱里,我来看看吗?