Gotcha in replace

Tim Roberts timr at probo.com
Tue Jul 10 08:03:37 CEST 2001


Tom Jenkins <tjenkins at devis.com> wrote:
>
>While I was working on some database scripting, I got bit by this 
>behavior in replace.
>
> >>> y = "insert into blah values ('hello','','','','bye')"
> >>> y.replace(",'',", ",' ',")
>"insert into blah values ('hello',' ','',' ','bye')"
> >>>
>
>Notice that the second matching set of ",''," characters are not 
>replaced probably because the first and second matching sets overlap on 
>the last and first character, respectively.
>...
>Is this known behavior and I just missed it; or is this a bug in replace?

It is known behavior.  The behavior makes more sense when you consider the
implementation of "replace"; it is essentially implemented as "split"
followed by "join":

  def replace(self,from,to):
    return to.join(self.split(from))
--
- Tim Roberts, timr at probo.com
  Providenza & Boekelheide, Inc.



More information about the Python-list mailing list