Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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在csv文件中查找具有已知列号的特定值的行号_Python_Csv_Row - Fatal编程技术网

如何通过python在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

我正在解决一个问题,创建一个函数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 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版本中都进行了测试,效果很好。你能把你当前的代码放在一个粘贴箱里,我来看看吗?