Python:搜索csv并返回整行

时间:2014-09-28 06:43:46

标签: python csv search return row

我找不到更好的地方来问我的问题。我正在学习Python并尝试按如下方式创建脚本。

1)应该能够搜索csv文件。

2)如果找到匹配,则返回整行。

我的csv:

Product,Scan,Width,Height,Capacity
LR,2999,76,100,17.5
RT,2938,37,87,13.4

如果我搜索2938作为示例,则返回整行,如下所示:

Product: RT
Scan: 2938
Width: 37
Height: 87
Capacity: 13,4

到目前为止,我有:

csvFile = getComponent().filePath
pos = csvFile.rfind('Desktop\\')
csvFile = csvFile[:pos] + 'programm\\products.csv'

myfile = open(csvFile)
myfile.seek(0)
for line in myfile.split('\n'):
    data = line.split(',')
    print data
    if data[2] == agv_O_Cal.value and data[3] == agv_O_Mod.value:
        print 'found: value = %s' %agv_O_Cal.value, agv_O_Mod.value
        Product = data[5]
        Scan = data[6]
        Width = data[7]
        Height = data[9]
        Capacity = data[10]
        print , Product, Scan, Width, Height, Capacity

解决方案不起作用。

2 个答案:

答案 0 :(得分:7)

#!/usr/bin/python

import csv
import sys

#input number you want to search
number = raw_input('Enter number to find\n')

#read csv, and split on "," the line
csv_file = csv.reader(open('test.csv', "rb"), delimiter=",")


#loop through csv list
for row in csv_file:
    #if current rows 2nd value is equal to input, print that row
    if number == row[1]:
         print row

答案 1 :(得分:1)

你可以像这样使用csv模块:

import csv
reader = csv.reader(open(csvFile, 'r'))
for data in reader:
    #list index start from 0, thus 2938 is in data[1]
    if data[1] == agv_O_Cal.value and data[3] == agv_O_Mod.value:
        #do somethinngs