![](/img/trans.png)
[英]Getting a value from a specific row and column number in a csv file with Python
[英]How to find row number of a particular value with known column number in csv file through python
我正在研究一个使用三个输入参数-文件名,col_number和value创建函数find_row的问题。 我想要像给定示例中的输出:
例如,如果我们有一个文件a.csv:
1, 1.1, 1.2
2, 2.1, 2.2
3
4, 4.1, 4.2
然后
print(find_row('a.csv',0,4))将打印3,
print(find_row('a.csv',2,2.2))将打印1,
print(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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.