Python: Searching Csv and Return Entire Row

Python: Searching Csv and Return Entire Row

I couldn´t find a better place to ask my question. I am learning Python and trying to create a script as follows.

1) Should be able to search csv file.

2) Return entire row if match is found.

My csv:

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

If I search for 2938 for an example, entire row is returned as follows:

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

So far I have:

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

The solution doesn´t work.

3

2 Answers

#!/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', "r"), delimiter=",")


#loop through the 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)
10

you can use csv module like this:

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling
Author

James H. Sterling

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.