re.sub and variables

John Machin sjmachin at lexicon.net
Thu Aug 12 19:14:57 EDT 2010


On Aug 13, 7:33 am, fuglyducky <fuglydu... at gmail.com> wrote:
> On Aug 12, 2:06 pm, fuglyducky <fuglydu... at gmail.com> wrote:
>
>
>
> > I have a function that I am attempting to call from another file. I am
> > attempting to replace a string using re.sub with another string. The
> > problem is that the second string is a variable. When I get the
> > output, it shows the variable name rather than the value. Is there any
> > way to pass a variable into a regex?
>
> > If not, is there any other way to do this? I need to be able to dump
> > the variable value into the replacement string.
>
> > For what it's worth this is an XML file so I'm not afraid to use some
> > sort of XML library but they look fairly complicated for a newbie like
> > me.
>
> > Also, this is py3.1.2 is that makes any difference.
>
> > Thanks!!!
>
> > #####################################################
>
> > import random
> > import re
> > import datetime
>
> > def pop_time(some_string, start_time):
> >     global that_string
>
> >     rand_time = random.randint(0, 30)
> >     delta_time = datetime.timedelta(seconds=rand_time)
>
> >     for line in some_string:
> >         end_time = delta_time + start_time
> >         new_string = re.sub("thisstring", "thisstring\\end_time",
> > some_string)
> >         start_time = end_time
>
> >     return new_string
>
> Disregard...I finally figured out how to use string.replace. That
> appears to work perfectly. Still...if anyone happens to know about
> passing a variable into a regex that would be great.

Instead of

new_string = re.sub(
    "thisstring", "thisstring\\end_time", some_string)

you probably meant to use something like

new_string = re.sub(
    "thisstring", "thisstring" + "\\" + end_time, some_string)

string.replace is antique and deprecated. You should be using methods
of str objects, not functions in the string module.

  >>> s1 = "foobarzot"
  >>> s2 = s1.replace("bar", "-")
  >>> s2
  'foo-zot'
  >>>



More information about the Python-list mailing list