gpt4 book ai didi

python - 替换Python中除了第一次出现的子字符串之外的所有内容?

转载 作者:行者123 更新时间:2023-12-02 05:12:36 27 4
gpt4 key购买 nike

我有一个如下所示的字符串

string = "SELECT sdfdsf SELECT sdrrr SELECT 5445ff"

现在我想用 @@@SELECT 替换除第一个之外的所有 SELECT 出现的地方,以便最终字符串看起来像这样

"SELECT sdfdsf @@@SELECT sdrrr @@@SELECT 5445ff"

现在 Python replace() 替换所有出现的 SELECT。

string = string.replace("SELECT", "@@@SELECT)

所以字符串就变成了

"@@@SELECT sdfdsf @@@SELECT sdrrr @@@SELECT 5445ff"

如何确保除了第一个实例之外,其他所有内容都被替换?

注意:字符串可以出现 n 次 SELECT

最佳答案

使用额外的“反向”替换步骤:

s = "SELECT sdfdsf SELECT sdrrr SELECT 5445ff"
res = s.replace("SELECT", "@@@SELECT").replace("@@@SELECT", "SELECT", 1)
print(res)

输出:

SELECT sdfdsf @@@SELECT sdrrr @@@SELECT 5445ff
<小时/>

更复杂但确保目标词边界的方法可能如下:

import re

def make_replacer():
rpl = ''
def inner(m):
nonlocal rpl
res = rpl + m.group()
rpl = '@@@'
return res
return inner

s = "SELECT sdfdsf SELECT sdrrr SELECT 5445ff"
res = re.sub(r'\bSELECT\b', make_replacer(), s)
print(res) # SELECT sdfdsf @@@SELECT sdrrr @@@SELECT 5445ff

关于python - 替换Python中除了第一次出现的子字符串之外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58353516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com