Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > re.sub and variables

Reply
Thread Tools

re.sub and variables

 
 
fuglyducky
Guest
Posts: n/a
 
      08-12-2010
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
 
Reply With Quote
 
 
 
 
fuglyducky
Guest
Posts: n/a
 
      08-12-2010
On Aug 12, 2:06*pm, fuglyducky <(E-Mail Removed)> 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.
 
Reply With Quote
 
 
 
 
John Machin
Guest
Posts: n/a
 
      08-12-2010
On Aug 13, 7:33*am, fuglyducky <(E-Mail Removed)> wrote:
> On Aug 12, 2:06*pm, fuglyducky <(E-Mail Removed)> 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'
>>>

 
Reply With Quote
 
Steven D'Aprano
Guest
Posts: n/a
 
      08-13-2010
On Thu, 12 Aug 2010 14:33:28 -0700, fuglyducky wrote:

> if anyone happens to know about
> passing a variable into a regex that would be great.


The same way you pass anything into any string.

Regexes are ordinary strings. If you want to construct a string from a
variable t = "orl", you can do any of these:

"Hello w" + t + "d"

"".join(["Hello", " ", "w", t, "d"])

"Hello w%sd" % t

"Hello %s" % ("w" + t + "d")

"Hello w%(var)sd" % {"var": t}

"Hello wSPAMd".replace("SPAM", t)

or many other variations. Constructing a regex is no different.


--
Steven
 
Reply With Quote
 
MRAB
Guest
Posts: n/a
 
      08-13-2010
Steven D'Aprano wrote:
> On Thu, 12 Aug 2010 14:33:28 -0700, fuglyducky wrote:
>
>> if anyone happens to know about
>> passing a variable into a regex that would be great.

>
> The same way you pass anything into any string.
>
> Regexes are ordinary strings. If you want to construct a string from a
> variable t = "orl", you can do any of these:
>
> "Hello w" + t + "d"
>
> "".join(["Hello", " ", "w", t, "d"])
>
> "Hello w%sd" % t
>
> "Hello %s" % ("w" + t + "d")
>
> "Hello w%(var)sd" % {"var": t}
>
> "Hello wSPAMd".replace("SPAM", t)
>
> or many other variations. Constructing a regex is no different.
>

You just need to remember that if you pass a string into re.sub as a
replacement then it'll be treated as a template. It's all in the
documentation!
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
what is difference between Class variables and Instance variables? rahul8143@gmail.com Java 10 06-06-2011 06:43 AM
Put variables into member variables or function variables? tjumail@gmail.com C++ 9 03-23-2008 04:03 PM
Session Variables and Static Variables cobus.lombard@gmail.com ASP .Net 1 03-26-2006 11:05 AM
newbie question about scope, variables, declarations of variables and option strict (as in perl) Talha Oktay Ruby 8 03-08-2006 04:11 PM
question about class variables and instance variables Eric D. Ruby 3 02-01-2006 07:57 PM



Advertisments