[EMAIL PROTECTED] wrote: > > Matt wrote: >> I am attempting to reformat a string, inserting newlines before >> certain phrases. For example, in formatting SQL, I want to start a >> new line at each JOIN condition. Noting that strings are immutable, I >> thought it best to spllit the string at the key points, then join >> with '\n'. > > I think that re.sub is a more appropriate method rather than split and > join > > trivial example (non SQL): > >>>> addnlre = re.compile('LEFT\s.*?\s*JOIN|RIGHT\s.*?\s*JOIN', >>>> re.DOTALL + re.IGNORECASE).sub addnlre(lambda x: x.group() + '\n', >>>> '... LEFT JOIN x RIGHT OUTER join y') > '... LEFT JOIN\n x RIGHT OUTER join\n y' > > Quite apart from the original requirement being to insert newlines before rather than after the phrase, I wouldn't have said re.sub was appropriate.
>>> addnlre(lambda x: x.group() + '\n', "select * from whatever where action in ['user left site', 'user joined site']") "select * from whatever where action in ['user left site', 'user join\ned site']" or with the newline before the pattern: >>> addnlre(lambda x: '\n'+x.group(), "select * from whatever where action in ['user left site', 'user joined site']") "select * from whatever where action in ['user \nleft site', 'user joined site']" -- http://mail.python.org/mailman/listinfo/python-list