parse a csv file into a text file
python at mrabarnett.plus.com
Thu Feb 6 14:16:37 CET 2014
On 2014-02-06 07:52, Zhen Zhang wrote:> On Wednesday, February 5, 2014
7:33:00 PM UTC-5, Roy Smith wrote:
>> In article <5c268845-003f-4e24-b27a-c89e9fbfcc6c at googlegroups.com>,
>> Zhen Zhang <zhen.zhang.uoft at gmail.com> wrote:
>> > [code]
>> > import csv
>> > file = open('raw.csv')
>> > reader = csv.reader(file)
>> > f = open('NicelyDone.text','w')
>> > for line in reader:
>> > f.write("%s %s"%line,%line)
>> > [/code]
>> Are you using Python 2 or 3?
>> > Here is my question:
>> > 1:What is the data format for line,
>> That's something you can easily figure out by printing out the
>> intermediate values. Try something like:
>> > for line in reader:
>> > print type(line), repr(line(1))
>> See if that prints what you expect.
>> > how come f.write() does not work.
>> What does "does not work" mean? What does get written to the file?
>> Or do you get some sort of error?
>> I'm pretty sure I see your error, but I'm trying to lead you to being
>> able to diagnose it yourself :-)
> Hi Roy ,
> Thank you so much for the reply,
> I am currenly running python 2.7
> i run the
> print type(line), repr(line(1))
> It tells me that 'list object is not callable
"line" is a list and within repr you're using (...) (parentheses)
instead of [...] (square brackets).
It might be clearer if you call the variable "row" because the CSV
reader returns rows, and each row is a list of strings.
> It seems the entire line is a data type of list instead of a data
> type of "line" as i thought.
> The line is a string element of list after all.
> f.write("%s %s %s" %(output,location,output))works great,
> as MRAB mentioned, I have to do write it in term of tuples.
> This is the code I am currently using
> for line in reader:
> location ="%s"%(line)
> if '(' in location:
> # at this point, bits = ['Toronto ', 'Ont.)']
> bits = location.split('(')
> location = bits.strip()
> output = "%s %s\n" %(location,line)
> f.write("%s" %(output))
A 1-tuple (a tuple containing one item) is:
It's actually the comma that makes it a tuple (except for the 0-tuple
"()"); it's just that it's often necessary to wrap it in (...), and
people then think it's those that are making it a tuple, but it's not!
> It extracts desired information into a text file as i wanted.
> however, the python program gives me a Error after the execution.
> IndexError: list index out of range
> I failed to figure out why.
What is the value of "line" at that point?
More information about the Python-list