help I'm getting delimited

John Machin sjmachin at lexicon.net
Wed Dec 17 13:44:11 CET 2008


On Dec 17, 9:39 pm, aka <alexoploca... at gmail.com> wrote:
> Due to being in a hurry I didn't paste correctly (sorry).
>
> The intention is to put values of column 1 ("id") in the roles list,
> therefore appending within the loop, to fill a session var.
>
> The complete code is:

It's *not* complete. It's missing "import csv".

>
> roles = []
> inp = 'C:/temp/test.csv'
> try:
>     fp = open(inp, 'rb')
>     reader = csv.reader(fp, dialect='excel', delimiter=';')
>     for r in reader:
>         roles.append(r)
>         ## ultimately should be something like r.id or r[0]
>         ## first row of csv file should be skipped because of column
> names
>
> except:
>     msg = 'Something's wrong with the csv.reader'

But you don't print the message! In any case, using the try/except
like that *hides* any useful diagnostic information; it gives only an
indication that something is wrong, but not what is wrong and where it
is wrong.

If you throw away the try/except, you will get a more meaningful
message -- possibly that "csv" is not defined!! -- and the traceback
will tell you in which line the error occured.

> return dict(file=inp,roles=str(roles))

Why do you think that you need (a) that complicated expression (b) the
str() call? Assuming you are intending to make a function out of all
that, what's wrong with returning a (simple) tuple:
   return inp, roles
?

The above 'return' statement is not inside a function/method. You
would have got this message:
    SyntaxError: 'return' outside function
People will very soon lose patience with you if you persist in not
posting the actual code that you ran.

> The roles list isn't populated at all :(

This could mean (if the code that was posted is moderately similar to
that which was run) that the error happened before the first time that
roles.append(r) was executed ;-)

Please divulge the contents of test.csv  -- but not if it's huge!
Considering trying to get your code to work first with a data file of
close-to-minimal size and complexity, like this:
8<---
id,other_info
tom,1
dick,2
harry,3
8<---

By the way, you mentioned the UnicodeReader class in your original
post, but you don't seem to use it ...



More information about the Python-list mailing list