2024-06-26 14:42:43 发布
网友
我有一个字符串s = 'sdfjoiweng%@$foo$fsoifjoi',我想用'bar'替换'foo'。
s = 'sdfjoiweng%@$foo$fsoifjoi'
'bar'
'foo'
我试过re.sub(r'\bfoo\b', 'bar', s)和re.sub(r'[foo]', 'bar', s),但没有任何效果。我做错什么了?
re.sub(r'\bfoo\b', 'bar', s)
re.sub(r'[foo]', 'bar', s)
您可以直接使用replace函数而不是regex。
>>> s = 'sdfjoiweng%@$foo$fsoifjoifoo' >>> >>> s.replace("foo","bar") 'sdfjoiweng%@$bar$fsoifjoibar' >>> >>>
这里,\b定义了一个单词字符(\w)和一个非单词字符之间的the word boundaries位置,这正是您在sdfjoiweng%@$foo$fsoifjoi字符串中为foo匹配的位置。对我有用:
\b
\w
sdfjoiweng%@$foo$fsoifjoi
foo
In [1]: import re In [2]: s = 'sdfjoiweng%@$foo$fsoifjoi' In [3]: re.sub(r'\bfoo\b', 'bar', s) Out[3]: 'sdfjoiweng%@$bar$fsoifjoi'
您可以直接替换它:
>>> import re >>> s = 'sdfjoiweng%@$foo$fsoifjoi' >>> print re.sub('foo','bar',s) sdfjoiweng%@$bar$fsoifjoi
它也适用于更多的foo事件,如下所示:
>>> s = 'sdfjoiweng%@$foo$fsoifoojoi' >>> print re.sub('foo','bar',s) sdfjoiweng%@$bar$fsoibarjoi
如果您只想替换第1个出现的foo,而不是字符串中所有出现的foo,那么alecxe的答案就是这样。
您可以直接使用replace函数而不是regex。
这里,
\b
定义了一个单词字符(\w
)和一个非单词字符之间的the word boundaries位置,这正是您在sdfjoiweng%@$foo$fsoifjoi
字符串中为foo
匹配的位置。对我有用:您可以直接替换它:
它也适用于更多的
foo
事件,如下所示:如果您只想替换第1个出现的
foo
,而不是字符串中所有出现的foo
,那么alecxe的答案就是这样。相关问题 更多 >
编程相关推荐