getting values from a text file (newby)

vsoler vicente.soler at gmail.com
Sun Feb 1 14:18:01 EST 2009


On 1 feb, 19:02, Stephen Hansen <apt.shan... at gmail.com> wrote:
> On Sun, Feb 1, 2009 at 9:24 AM, vsoler<vicente.soler at gmail.com>wrote:Hi,
> My foo.txt file contains the following:
> 1,"house","2,5"
> 2,"table","6,7"
> 3,"chair","-4,5"
> ... as seen with notepad.
> This file was created with the OpenOffice Calc spreadsheet, but since
> I use comma as the decimal separator for numbers, the last value in
> each line appears sorrounded by quotes.
> I would like to obtain:
> [[1,"house",2.5], [2,"table",6.7], [3,"chair",-4.5]]
> If I read your requirements, right, I think you want:import csv
> data = []
> reader = csv.reader(open("filename", "r"))
> for line in reader:
>      data.append(
>          line[0], line[1], float(line[2].replace(",", "."))
>      )
> print data
> Although you may want to replace that last bit with
>     decimal.Decimal(line[2].replace(",","."))
> If you want an exact result and not the approximate floating point result.
> Basically the csv module can read through the CSV file very easily, but because you're using commas instead of points you just have to edit that out before you convert it to a number.
> --S
>
>  signature.asc
> < 1 KBVerDescargar

with small modifications, your answers work perfectly!!!

r: in the open statement, why do you use 'rb' as 2nd argument? b is
supposed to be binary, and my file is text!
Steve: your idea works
Stephen: I got an error message saying that append can only take one
argument while you add three; I have added [ ] around the three
arguments; now it's fine; I've also added int() around first argument
to turn it into an integer.

Thank you all indeed!



More information about the Python-list mailing list