On Wed, Jul 14, 2010 at 5:42 AM, MRAB <pyt...@mrabarnett.plus.com> wrote:
> News123 wrote: > >> I wondered about a potentially nicer way of removing a prefix of a >> string if it exists. >> >> >> Here what I tried so far: >> >> >> def rm1(prefix,txt): >> if txt.startswith(prefix): >> return txt[len(prefix):] >> return txt >> >> >> for f in [ 'file:///home/me/data.txt' , '/home/me/data.txt' ]: >> # method 1 inline >> prefix = "file://" >> if f.startswith(prefix): >> rslt = f[len(prefix):] >> else >> rsl = f >> # method 2 as function >> rslt = rm1('file://',f) >> >> >> Is there any nicer function than above rm1()? >> > > No. > > > Is there any nicer inline statement rhan my method 1' ? >> >> You could write: > > rsl = f[len(prefix):] if f.startswith(prefix) else f > Or you can just do split and join, "".join(f.split(prefix, 1)) will do. >>> prefix = 'file://' >>> f = 'file:///home/me/data.txt' >>> "".join(f.split(prefix, 1)) '/home/me/data.txt' >>> f = 'file:///home/me/data.txtfile://' >>> "".join(f.split(prefix, 1)) '/home/me/data.txtfile://' >>> f = '/home/me/data.txt' >>> "".join(f.split(prefix, 1)) '/home/me/data.txt'
-- http://mail.python.org/mailman/listinfo/python-list