tcl list to python list?

Paul McGuire ptmcg at austin.rr._bogus_.com
Sun Sep 17 07:01:22 CEST 2006


<jerry.levan at gmail.com> wrote in message 
news:1158459542.693284.98090 at h48g2000cwc.googlegroups.com...
> Hi,
>
> I have a file that contains a "tcl" list stored as a string.  The list
> members are
> sql commands ex:
> { begin { select * from foo
>                where baz='whatever'}
>  {select * from gooble } end
>  { insert into bar values('Tom', 25) } }
>
> I would like to parse the tcl list into a python list...
>
> Any suggestions ( I am running Tkinter...)
>
> Jerry
>

This is very similar to the Python list parser that comes with pyparsing. 
Adapted to your syntax, this looks something like:

tcl = """sql commands ex:
 { begin { select * from foo
                where baz='whatever'}
  {select * from gooble } end
  { insert into bar values('Tom', 25) } }"""

from pyparsing import *

tcllist = Forward()
element = quotedString | Word(alphas,alphanums+"_") | \
          Combine(Word(nums) + "." + Optional(Word(nums)) ) | Word(nums) | \
          oneOf( list(r"(),.+=`~!@#$%^&*-|\?/><;:") ) | Group( '{' + tcllist 
+ '}' )
tcllist << OneOrMore( element )

import pprint
pprint.pprint( tcllist.parseString(tcl).asList() )

Giving:

['sql',
 'commands',
 'ex',
 ':',
 ['{',
  'begin',
  ['{', 'select', '*', 'from', 'foo', 'where', 'baz', '=', "'whatever'", 
'}'],
  ['{', 'select', '*', 'from', 'gooble', '}'],
  'end',
  ['{', 'insert', 'into', 'bar', 'values', '(', "'Tom'", ',', '25', ')', 
'}'],
  '}']]

The pyparsing home page is at pyparsing.wikispaces.com.

-- Paul





More information about the Python-list mailing list