kj 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

As you probably noticed from the other responses: No, you can't split on _and_ keep the splitby text.

Looks like you'll have to roll your own.

def splitat(text, sep):
    result = [line + sep for line in text.split(sep)]
    if result[-1] == sep:  # either remove extra element
       result.pop()
    else:                   # or extra sep from last element
        result[-1] = result[-1][:-len(sep)]
    return result
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to