Config parser module

qqcq6s59 at gmail.com qqcq6s59 at gmail.com
Tue Sep 27 17:47:13 CEST 2005


wow,
Thanks alex, this rocks really, [ i am new to OOP style in python]
I am trying to implement it on similar lines,
I`ll comeback if I encounter any trouble.

thanks again
-Jiro



Paul McGuire wrote:
> <qqcq6s59 at gmail.com> wrote in message
> news:1127489369.091513.206040 at g49g2000cwa.googlegroups.com...
> > Hi all
> > I am a newbie and I just saw a ongoing thread on Fileprocessing which
> > talks abt config parser.
> > I have writen many pyhton program to parse many kind of text files by
> > using string module and regex. But after reading that config parser
> > thread I feel stunned.
> >
> > Can somebody tell me some intro info how to parse huge data (most of
> > them are input data to application softwares like nastran, abaqus etc)
> >
> > Recently I saw a great work by John on Nastran file parser (i am still
> > trying to understand the program,
> > http://jrfonseca.dyndns.org/svn/phd/python/Data/Nastran/
> >
> > An example of dat may be like this, (part of)
> > (say point  id     coordinateSysNo x,y,z ...)
> > GRID           1       12478.0  0.0     256.75         1
> > GRID           2       12357.25 0.0     256.75         1
> > GRID           3       12357.25 0.0     199.0          1
> > (say Elementtype id  property point1 point 2 point3 point4 etc)
> > CQUAD4      7231      21    5691    5700    5701    56920.0
> >
> > CQUAD4      7232      21    5692    5701    5702    56930.0
> >
> > CQUAD4      7233      21    5693    5702    5703    56940.0
> >
> > the data file is very complex if i consider all complexities)
> >
> > Is is possible to use config parser module insome way for this. I also
> > have few perl parser (for some part for some particular tasks) and now
> > changing them to python. (I feel perl regex combination is very easy to
> > learn and very powerfull)
> >
> > Any information will be appreciated.
> >
> > -jiro
> >
>
> Here's some sample code that might give you some ideas.
>
> -- Paul
>
>
> data = """\
> GRID           1       12478.0  0.0     256.75         1
> GRID           2       12357.25 0.0     256.75         1
> GRID           3       12357.25 0.0     199.0          1
> CQUAD4      7231      21    5691    5700    5701    56920.0
> CQUAD4      7232      21    5692    5701    5702    56930.0
> CQUAD4      7233      21    5693    5702    5703    56940.0
> """
>
> class Node(object):
>     def __init__(self,s):
>         self.__dict__.update( zip(self.getInitVarNames(), s.split()) )
>
>     def __str__(self):
>         return "%s %s" % (self.__class__.__name__, self.__dict__)
>
> class GridNode(Node):
>     def getInitVarNames(self):
>         return "id,x,y,z,other".split(',')
>
> class Cquad4Node(Node):
>     def getInitVarNames(self):
>         return "id,p1,p2,p3,p4,other".split(',')
>
>
> # define mapping of leading keyword to class name
> typeNodeClassMap = {
>     "GRID" : GridNode,
>     "CQUAD4" : Cquad4Node,
>     }
>
> def makeNode(s):
>     nodeType,nodeArgs = s.split(" ",1)
>     nodeClass = typeNodeClassMap[nodeType]
>     return nodeClass( nodeArgs )
>
> for line in data.split("\n"):
>     if line:
>         n = makeNode(line)
>         print n




More information about the Python-list mailing list