How can I remove the first line of a multi-line string? (SOLVED)

Fábio Santos fabiosantosart at gmail.com
Wed Sep 11 08:08:18 EDT 2013


On 2 Sep 2013 18:13, "Roy Smith" <roy at panix.com> wrote:
>
> In article <mailman.500.1378139057.19984.python-list at python.org>,
>  Anthony Papillion <papillion at gmail.com> wrote:
>
> > On 09/02/2013 11:12 AM, Chris “Kwpolska” Warrick wrote:
> > > On Mon, Sep 2, 2013 at 6:06 PM, Anthony Papillion <papillion at gmail.com
>
> > > wrote:
> > >> Hello Everyone,
> > >>
> > >> I have a multi-line string and I need to remove the very first line
from
> > >> it. How can I do that? I looked at StringIO but I can't seem to
figure
> > >> out how to properly use it to remove the first line. Basically, I
want
> > >> to toss the first line but keep everything else.  Can anyone put me
on
> > >> the right path? I know it is probably easy but I'm still learning
Python
> > >> and don't have all the string functions down yet.
> > >>
> > >> Thanks,
> > >> Anthony
> > >> --
> > >> http://mail.python.org/mailman/listinfo/python-list
> > >
> > > Use split() and join() methods of strings, along with slicing.  Like
this:
> > >
> > >     fullstring = """foo
> > >     bar
> > >     baz"""
> > >
> > >     sansfirstline = '\n'.join(fullstring.split('\n')[1:])
> > >
> > > The last line does this:
> > > 1. fullstring.split('\n') turns it into a list of ['foo', 'bar',
'baz']
> > > 2. the [1:] slice removes the first element, making it ['bar', 'baz']
> > > 3. Finally, '\n'.join() turns the list into a string separated by
> > > newlines ("""bar
> > > baz""")
> >
> > This, of course, worked like a charm. I really need to study the string
> > methods. In the work I'm doing they are going to come in very handy.
> > Thank you, Chris!
>
> Let me toss out a couple of other possibilities.  Not necessarily
> better, but if you're learning about strings, you might as well learn
> some other ways to do it:
>
>
> s = """foo
>
> bar
>
> baz"""
>
> print "using index..."
> i = s.index('\n')
> print s[i+1:]
>
> print "using regex..."
> import re
> print re.sub(r'^[^\n]*\n', '', s)
>
>
> I'll admit, the split/slice/join solution is probably the easiest to
> implement (and to understand when you're reading the code).  But, it
> copies all the data twice; once when split() runs, and again when join()
> runs.  Both the index and regex solutions should only do a single copy.
> For huge strings, this might matter.  For a three-liner as in your
> example, it doesn't make any difference.
>

Is there not a limit argument to str.split? This should be trivial.

first, rest = multiline_str.split('\n', 1)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130911/9b7fba02/attachment.html>


More information about the Python-list mailing list