Eddie
Eddie

Reputation: 179

Using re.sub and replacing string WITH a regular expression using variables in Python

Suppose I have a string

the_string = "the brown fox"

And I wan't to replace the spaces with a number of characters, for example, 5 dash marks

new_string = "the-----brown-----fox"

but this will be a variable, so i cant just do:

the_string = 'the brown fox'
new_string = re.sub(r'\s', '-----', the_string)

I need something like the following:

the_string = 'the brown fox'
num_dashes = 5
new_string = re.sub(r'\s', r'-{num_dashes}', the_string)

Is something like this possible?

Upvotes: 3

Views: 2156

Answers (2)

user156213
user156213

Reputation: 766

Yes, you can do this:

the_string = 'the brown fox'
num_dashes = 5
re.sub(r'\s', '-'*num_dashes, the_string)

Upvotes: 3

vks
vks

Reputation: 67968

def repl(matchobj):
    if matchobj.group():
        #do something
        #return whatever you want to replace

my_str = "the brown fox"

pattern = r"\s+"
print re.sub(pattern, repl, my_str)

You can define a function in re.sub

Upvotes: 2

Related Questions