On Fri, Aug 14, 2009 at 2:23 PM, kj <no.em...@please.post> wrote: > > > Sometimes I want to split a string into lines, preserving the > end-of-line markers. In Perl this is really easy to do, by splitting > on the beginning-of-line anchor: > > @lines = split /^/, $string; > > But I can't figure out how to do the same thing with Python. E.g.: > > >>> import re > >>> re.split('^', 'spam\nham\neggs\n') > ['spam\nham\neggs\n'] > >>> re.split('(?m)^', 'spam\nham\neggs\n') > ['spam\nham\neggs\n'] > >>> bol_re = re.compile('^', re.M) > >>> bol_re.split('spam\nham\neggs\n') > ['spam\nham\neggs\n'] > > Am I doing something wrong? > > kynn > -- > http://mail.python.org/mailman/listinfo/python-list >
You shouldn't use a regular expression for that. >>> from time import time >>> start=time();'spam\nham\neggs\n'.split('\n');print time()-start; ['spam', 'ham', 'eggs', ''] 4.6968460083e-05 >>> import re >>> start=time();re.split(r'\n', 'spam\nham\neggs');print time()-start; ['spam', 'ham', 'eggs'] 0.000284910202026
-- http://mail.python.org/mailman/listinfo/python-list