parse a csv file into a text file

MRAB python at
Thu Feb 6 01:34:57 CET 2014

On 2014-02-06 00:10, Zhen Zhang wrote:
> Hi, every one.
> I am a second year EE student.
> I just started learning python for my project.
> I intend to parse a csv file with a format like
> 3520005,"Toronto (Ont.)",C  ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1
> 2466023,"Montréal (Que.)",V  ,F,1620693,1583590,T,F,2.3,787060,743204,365.1303,4438.7,2
> 5915022,"Vancouver (B.C.)",CY ,F,578041,545671,F,F,5.9,273804,253212,114.7133,5039.0,8
> 3519038,"Richmond Hill (Ont.)",T  ,F,162704,132030,F,F,23.2,53028,51000,100.8917,1612.7,28
> into a text file like the following
> Toronto 2503281
> Montreal 1620693
> Vancouver 578041
> I am extracting the 1st and 5th column and save it into a text file.
> This is what i have so far.
> [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[1],%line[5])
> [/code]
> This is not working for me, I was able to extract the data from the csv file as line[1],line[5]. (I am able to print it out)
> But I dont know how to write it to a .text file in the format i wanted.
% is an operator. When used with a format string on its left, its
arguments go on its right. In the general case, those arguments should
be put in a tuple, although if there's only one argument and it's not a
tuple, you can write just that argument:

     f.write("%s %s" % (line[1], line[5]))

> Also, I have to process the first column eg, "Toronto (Ont.)" into "Toronto".
> I am familiar with the function find(), I assume that i could extract Toronto out of Toronto(Ont.) using "(" as the stopping character,
> but based on my research , I have no idea how to use it and ask it to return me the string(Toronto).
Use find to tell you the index of the "(" (if there isn't one then
it'll return -1) and then slice the string to get the part preceding it.

Another way is to use the "partition" method.

Also, have a look at the "strip"/"lstrip"/"rstrip" methods.

> Here is my question:
> 1:What is the data format for line[1], if it is string how come f.write()does not work. if it is not string, how do i convert it to a string?
> 2:How do i extract the word Toronto out of Toronto(Ont) into a string form using find() or other methods.
> My thinking is that I could add those 2 string together like c=a+' ' +b, that would give me the format i wanted.
> So i can use f.write() to write into a file  ;)
> Sorry if my questions sounds too easy or stupid.
> Thanks ahead
> Zhen

More information about the Python-list mailing list