parsing csv files class

alex goretoy aleksandr.goretoy at gmail.com
Sat Dec 27 06:10:06 EST 2008


I know it's messy with all those self.soc.* functions, but it works in one
of my current project. I just want to make it more pythonic I also want to
add capability for makeing csv file if I give it input like:
1234,something nice, hey this is something nice
2468,something else, something else

On Sat, Dec 27, 2008 at 4:54 AM, alex goretoy
<aleksandr.goretoy at gmail.com>wrote:

> Hello All,
>
> I have this class that I use in one of my projects. I know it's missing
> functionality and some things could have been done differently. Can you ehlp
> me make this class better? What can I do to make it more resistant to error?
> You can find the stdout_colours class on Google if you want it, JFGI I want
> to make it more pythonic. I come from a PHP background, can you tell?
>
> Any and all help is appreciated
> -Alex
>
> #!/usr/bin/env python
> from ctypes import *
> import os, sys, types, csv, urllib, urllib2, urlparse,
> string,stdout_colours
>
> class parsercsvy(object):
>     """Return a line from a csv file or total amount of lines"""
>     def __init__(self,file_name=""):
>         self.func_me_color="white_on_black"
>         self.soc=stdout_colours.stdout_colors()
>         self.soc.me_him(['ENTER:',__name__],self.func_me_color)
>         self.filename = file_name
>         self.buffer = []
>         self.bufferp= []
>         if string.find(self.filename,"http") != -1:
>             resp=urllib2.urlopen(self.filename)
>             file=resp.read()
>             lfi=len(string.split(self.filename,"/"))
>             filename = "/tmp/"+string.split(self.filename,"/")[lfi-1]
>             f=open(filename,"w")
>             f.write(file)
>             f.close
>             self.parse(self.filename)
>         else:
>             self.parse(self.filename)
>         self.soc.me_him(['EXIT:',__name__],self.func_me_color)
>     def parse(self,filename,ret=0):
>         self.soc.me_him(['ENTER:',__name__],self.func_me_color)
>         i = 0
>         try:
>             reader = csv.reader(file(filename, "rb"))
>             try:
>                 for row in reader:
>                     self.buffer.append(row)
>                     s,a=[],{}
>
>                     for j in range(len(self.buffer[0])):
>                         a[self.buffer[0][j]]=row[j]
>                     self.bufferp.append(a)
>                     i+=1
>                 self.total = i-1
>             except csv.Error, e:
>                 sys.exit('file %s, line %d: %s' % (filename,
> reader.line_num, e))
>         except IOError, e:
>             sys.exit('file %s, IOError: %s' % (filename, e))
>         self.soc.me_him(['EXIT:',__name__],self.func_me_color)
>     def index(self, index):
>         """return line for index"""
>         self.soc.me_him(['ENTER:',__name__],self.func_me_color)
>
> self.soc.me_him(['RETURN:',self.buffer[int(index)],__name__],self.func_me_color)
>         return self.buffer[int(index)]
>     def total(self):
>         """return total number of lines in csv file"""
>         self.soc.me_him(['ENTER:',__name__],self.func_me_color)
>         self.soc.me_him(['RETURN:',self.total,__name__],self.func_me_color)
>         return self.total
>     def header(self):
>         """return csv header == line 0"""
>         self.soc.me_him(['ENTER:',__name__],self.func_me_color)
>
> self.soc.me_him(['RETURN:',self.buffer[0],__name__],self.func_me_color)
>         return self.buffer[0]
>     def find_and_replace(self,li,fi,re):
>         """
>         find and replace a string inside a string, return list
>         find_and_replace(list,find,replace)
>         """
>         this=[]
>         for l in li:
> #            found_index=string.find(l,fi)
>             this.append(l.replace(fi,re))
>         return this
>     def return_buffer(self):
>         self.soc.me_him(['ENTER:',__name__],self.func_me_color)
>
> self.soc.me_him(['RETURN:',self.buffer,__name__],self.func_me_color)
>         return self.buffer
> if __name__ == "__main__":
>     if len(sys.argv) < 1:
>         print "Usage: %s file"% sys.argv[0]
>     f=sys.argv[1]
>     c=csv_parser(f)
>     print c.bufferp
> --
> А-Б-В-Г-Д-Е-Ё-Ж-З-И-Й-К-Л-М-Н-О-П-Р-С-Т-У-Ф-Х-Ц-Ч-Ш-Щ-Ъ-Ы-Ь-Э-Ю-Я
> а-б-в-г-д-е-ё-ж-з-и-й-к-л-м-н-о-п-р-с-т-у-ф-х-ц-ч-ш-щ-ъ-ы-ь-э-ю-я
>



-- 
А-Б-В-Г-Д-Е-Ё-Ж-З-И-Й-К-Л-М-Н-О-П-Р-С-Т-У-Ф-Х-Ц-Ч-Ш-Щ-Ъ-Ы-Ь-Э-Ю-Я
а-б-в-г-д-е-ё-ж-з-и-й-к-л-м-н-о-п-р-с-т-у-ф-х-ц-ч-ш-щ-ъ-ы-ь-э-ю-я
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20081227/0182123a/attachment-0001.html>


More information about the Python-list mailing list