在re.sub中使用变量名

时间:2019-06-14 14:35:41

标签: python regex function replace

我有一个函数,可以使用正则表达式替换句子中的单词。

我拥有的功能如下:

def replaceName(text, name):
    newText = re.sub(r"\bname\b", "visitor", text) 
    return str(newText)

说明:

text = "The sun is shining"
name = "sun"

print(re.sub((r"\bsun\b", "visitor", "The sun is shining"))

>>> "The visitor is shining"

但是:

replaceName(text,name)
>>> "The sun is shining"

我认为这是行不通的,因为我使用的是字符串名称(在这种情况下为名称),而不是字符串本身。谁知道我该怎么做才能使用此功能?

我考虑过:

  1. Using variable for re.sub, 但是,尽管名称相似,但问题有所不同。
  2. Python use variable in re.sub,但这只是日期和时间。

1 个答案:

答案 0 :(得分:2)

您可以在此处使用字符串格式:

def replaceName(text, name):
    newText = re.sub(r"\b{}\b".format(name), "visitor", text) 
    return str(newText)

否则,在您的情况下,re.sub只是在寻找完全匹配的"\bname\b"


text = "The sun is shining"
name = "sun"
replaceName(text,name)
# 'The visitor is shining'

或者对于3.6<的python版本,您可以使用f-strings,就像@wiktor在注释中指出的那样:

def replaceName(text, name):
    newText = re.sub(rf"\b{name}\b", "visitor", text) 
    return str(newText)