[Tutor] Reading Input Data

Michael Langford mlangford.cs03 at gtalumni.org
Tue Jan 15 21:50:35 CET 2008


Accidentally cut off a 0 there...
Think about using ConfigParser instead of your csv. Doug Hellman wrote
a good article on that:
http://blog.doughellmann.com/2007/04/pymotw-configparser.html

But if you really want to load your data this way, this will work:

for subscript,line in enumerate(file("file.csv")):
     s = line.split(",")[1]
     try:
	     f = float(s)
	     locals()["x%i" % subscript]=f
     except:
	     locals()["x%i" % subscript]=s

print x1
print x0

On Jan 15, 2008 3:47 PM, Michael Langford <mlangford.cs03 at gtalumni.org> wrote:
> for subscript,line in enumerate(file("file.csv")):
>      s = line.split(",")[1]
>      try:
>              f = float(s)
>              locals()["x%i" % subscript]=f
>      except:
>              locals()["x%i" % subscript]=s
>
> print x1
> print x
>
> On Jan 15, 2008 3:26 PM, lechtlr <lechtlr at yahoo.com> wrote:
>
> > I want to read an input file (file.csv) that has two columns. I want to read
> > 2nd column and assign variables that are strings and floats. Currently, I
> > use the following split() function to read from the input file and create a
> > list, and then assign each element to a variable.
> >
> > I am wondering there is any other easier (and elegant) way of doing this ?
> >
> > data = []
> > for line in open("file.csv"):
> >      columns = line.split(',')
> >      data.append([columns[1]])
> >
> > This script returns, say:
> > data = [ ['20.0'], ['0.34'], ................,[ 'a:0.20, b:0.30, c:0.50' ]]
> >
> > Then, I assign to a set of variables, say:
> >
> > x1 = float(data[0][0]) ; x2 = float(data[1][0]);.............;xn =
> > data[-1][0]
> >
> >
> > Thanks,
> > Lex
> >
> >
> >
> >
> >
> >
> >
> >
> >  ________________________________
> > Never miss a thing. Make Yahoo your homepage.
>
> > _______________________________________________
> > Tutor maillist  -  Tutor at python.org
> > http://mail.python.org/mailman/listinfo/tutor
> >
> >
>
>
>
> --
> Michael Langford
> Phone: 404-386-0495
> Consulting: http://www.RowdyLabs.com
>



-- 
Michael Langford
Phone: 404-386-0495
Consulting: http://www.RowdyLabs.com


More information about the Tutor mailing list