From: fuglyducky on 12 Aug 2010 17:06 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
From: fuglyducky on 12 Aug 2010 17:33 On Aug 12, 2:06 pm, fuglyducky <fuglydu...(a)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.
From: John Machin on 12 Aug 2010 19:14 On Aug 13, 7:33 am, fuglyducky <fuglydu...(a)gmail.com> wrote: > On Aug 12, 2:06 pm, fuglyducky <fuglydu...(a)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' >>>
From: Steven D'Aprano on 12 Aug 2010 22:03 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
From: MRAB on 12 Aug 2010 22:20 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! :-)
|
Pages: 1 Prev: Floating numbers Next: Distress sale /Dubai/JLT/Shop/Full lake view/050-8320722 |