On 04/24/2013 07:01 PM, Ana DionĂ­sio wrote:
Hello!

I have this script that scans a csv file and if the value in the first column 
== 200 it saves that row into an array.

No it doesn't. It creates a list, then overwrites it with a numpy array, then overwrites that with a list of strings representing one row.

If you want to really use a Python array, then read here:

   http://docs.python.org/2/library/array.html

It'd probably be best to start with a precise problem statement, presumably copied from your textbook or assignment sheet. What python version is this for? And what OS? (that affects whether you need a file mode) Exactly what data structure are you trying to build? What type of a csv file are you trying to use? Is there a standard header line? How big might the file be? What behavior do you want if there's no line that begins with the field "200"? Or if there's more than one such line? Or if there are less than 10 lines following it in the file? What about a field of "0200"?


The problem is, I need to save that row and the next 10 rows in that same 
array. What can I add to the script so it does that? I tried to do for row in 
len(10): but I get an error.


When you say "get an error" it could be one of many things. In this case, it's obvious, since len() doesn't make sense with an integer parameter. But in general you want to say either:

1) it gave me the wrong result.  I expected AAAA and got BBBB
2) it did nothing at all.
3) it gave an exception, and here's the full traceback.



p = csv.reader(open('file.csv'), delimiter=';')
a=[0]*2881
a = numpy.array(a, dtype=dict)

These two lines do nothing useful, and they confuse the reader of the code, since they imply that the list will end up of size 2881, and/or as a numpy array.

for row in p:
        if row[0]=="200":
           a=row
           break

missing else clause. How do you detect that there was no match?

print a



--
DaveA
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to