在 re.sub 中使用变量名 [重复]

Posted

技术标签:

【中文标题】在 re.sub 中使用变量名 [重复]【英文标题】:Use a variable name in re.sub [duplicate] 【发布时间】:2019-10-29 05:13:19 【问题描述】:

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

我的功能如下:

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"

我认为这不起作用,因为我使用的是字符串的名称(在本例中为名称)而不是字符串本身。谁知道我该怎么做才能使这个功能起作用?

我考虑过:

    Using variable for re.sub, 然而,尽管名称相似,但它是一个不同的问题。 Python use variable in re.sub,但这只是日期和时间。

【问题讨论】:

re.sub(r"\b\b".format(name), "visitor", text)re.sub(rf"\bname\b", "visitor", text) 在 Python 3.7+ 中。 re.escape 和其他调整也应该考虑。 【参考方案1】:

您可以在这里使用字符串格式:

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 版本,您可以使用@wiktor 在cmets 中指出的f-strings:

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

【讨论】:

以上是关于在 re.sub 中使用变量名 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ts不同文件变量名重复

Python 2.7 列表理解泄漏变量名 [重复]

从文件名中提取变量名[重复]

在 Perl 的严格模式下使用动态生成的变量名 [重复]

大熊猫中的`re.sub()`

从另一个类获取原始变量名[重复]