You asked for parsing, here's some pyparsing. Download pyparsing at http://pyparsing.sourceforge.net. -- Paul
from pyparsing import * IMPORT = Keyword("import") AS = Keyword("as") FROM = Keyword("from") ident = Word(alphas+"_", alphanums+"_") import1 = Group( IMPORT + ident + Optional( AS + ident ) ) import2 = Group( FROM + ident + IMPORT + ("*" | delimitedList( ident + Optional( AS + ident ) ) ) ) imports = import1 | import2 comment = "#" + restOfLine imports.ignore(comment) test = """ import useful from useful import * from useful import turn_around, turn_right, climb_up_east import useful as use from useful import turn_right from useful import turn_right from useful import turn_right as vire_a_droite, turn_left as drehen_nach_links import sys from sys import * # import in comment # import sys import useful import sys """ results = OneOrMore( imports ).parseString( test ) for imp in results: print imp =========== prints: ['import', 'useful'] ['from', 'useful', 'import', '*'] ['from', 'useful', 'import', 'turn_around', 'turn_right', 'climb_up_east'] ['import', 'useful', 'as', 'use'] ['from', 'useful', 'import', 'turn_right'] ['from', 'useful', 'import', 'turn_right'] ['from', 'useful', 'import', 'turn_right', 'as', 'vire_a_droite', 'turn_left', 'as', 'drehen_nach_links'] ['import', 'sys'] ['from', 'sys', 'import', '*'] ['import', 'useful'] ['import', 'sys'] -- http://mail.python.org/mailman/listinfo/python-list