我有一个函数,可以使用正则表达式替换句子中的单词。
我拥有的功能如下:
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"
我认为这是行不通的,因为我使用的是字符串名称(在这种情况下为名称),而不是字符串本身。谁知道我该怎么做才能使用此功能?
我考虑过:
答案 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)