CSV module: incorrectly parsed file.
7stud
bbxx789_05ss at yahoo.com
Mon Feb 18 00:10:19 EST 2008
On Feb 17, 9:11 pm, 7stud <bbxx789_0... at yahoo.com> wrote:
> On Feb 17, 7:09 pm, Christopher Barrington-Leigh
>
>
>
> <christophe... at gmail.com> wrote:
> > Here is a file "test.csv"
> > number,name,description,value
> > 1,"wer","tape 2"",5
> > 1,vvv,"hoohaa",2
>
> > I want to convert it to tab-separated without those silly quotes. Note
> > in the second line that a field is 'tape 2"' , ie two inches: there is
> > a double quote in the string.
>
> > When I use csv module to read this:
>
> > import sys
> > outf=open(sys.argv[1]+'.tsv','wt')
> > import csv
> > reader=csv.reader(open(sys.argv[1], "rb"))
> > for row in reader:
> > outf.write('\t'.join([rr.strip() for rr in row]) +'\n')
>
> > it mangles it, messing up the double double-quote.
> > Can anyone help me? How do I use CSV to get it right?
> > Tjhanks!
> > c
>
> Try this:
>
> infile = open('data.txt')
> outfile = open('outfile.txt', 'w')
>
> for line in infile:
> pieces = line.strip().split(',')
>
> data = []
> for piece in pieces:
> if piece[0] == '"':
> data.append(piece[1:-2])
> else:
> data.append(piece)
>
> out_line = '%s\n' % '\t'.join(data)
> outfile.write(out_line)
Whoops. The line:
data.append(piece[1:-2])
should be:
data.append(piece[1:-1])
More information about the Python-list
mailing list