我有一个像下面这样的字符串
statement = "If you find abc in the expression abc>efg, then ignore the expression"
现在,我想用另一个术语abc
替换确切的术语abc
(注意find abc
出现两次。首先在expression abc>efg
中,然后在mno
中)
所以最后句子应该看起来像
If you find mno in the expression abc>efg, then ignore the expression"
这就是我所做的
word = "abc"
print(statement.replace("abc", "mno"))
但是它将替换abc
的两个实例。
我在网上查找了可能的解决方案。一种解决方案是使用regex
并引入单词边界\b
。所以我尝试了这种方法
re.sub(word, '', statement)
我希望它能检查单词边界(在这种情况下,abc
两侧都有一个空格)并识别并替换它,但是我得到的结果与以前差不多。
If you find mno in the expression mno>efg, then ignore the expression
如何确保只替换独立的abc
,而不替换附加在表达式上的那个?
答案 0 :(得分:2)
下面的代码将替换第一个实例
statement.replace("abc", "mno", 1)
答案 1 :(得分:1)
您可以为replace
提供可选的count
参数。这只会替换前n个匹配的子字符串。
print("hello world hello".replace("hello", "REDACTED", 1))
输出:
REDACTED world hello
答案 2 :(得分:0)
如果您的目标是仅用两边的空格替换abc
,则可以使用:
print(statement.replace(" abc ", " mno "))
注意“ abc”和“ mno”周围的空格
答案 3 :(得分:0)
您可以用“ mno”替换“ abc”(前后带有空格)。