12

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
  • whats your current output? Commented Sep 28, 2014 at 6:45
  • Indetation error: unexpected indent Commented Sep 28, 2014 at 7:03
  • I edit your code. try that. Commented Sep 28, 2014 at 7:31

2 Answers 2

12
#!/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)
Sign up to request clarification or add additional context in comments.

10 Comments

Should my csv file be located in the same folder as py file?
yes, ofcourse replace "test.csv" with your csv name
Enter number to find 2938 Traceback (most recent call last): File "C:\Users\MyName\Desktop\programm\phy2.py", line 5, in <module> csv_file = csv.reader(open('autod.csv', "rb"), delimiter=",") NameError: name 'csv' is not defined
How is possible to output as a list? Description before (ex. Product: Xcl where Xcl is value taken from csv) and value after.
didnt understand your question, but please upvote/accept my answer as per community standards.
|
1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.