python字符串替换的问题
问题例子如下:原字符串:abc{s1}123{s2}efg我想把以字符{s1}开头,以字符串{s2}结尾的中间的字符串123替换成888,应该怎么写? 本帖最后由 sgbyg 于 2023-2-18 16:24 编辑
print(re.sub(r'{s1}123{s2}', '{s1}888{s2}', 'abc{s1}123{s2}efg')) 用正则表达式替换 您可以使用 Python 的字符串方法 find() 和 replace() 来实现这个任务。以下是一种可能的实现方法:
s = "abc{s1}123{s2}efg"
s1 = "{s1}"
s2 = "{s2}"
start = s.find(s1) + len(s1)
end = s.find(s2)
if start > 0 and end > 0 and end > start:
s = s[:start] + "888" + s
print(s)
在这个示例代码中,我们先定义了原始字符串 s,以及要查找和替换的子字符串 {s1} 和 {s2}。然后,我们使用字符串方法 find() 来查找 {s1} 和 {s2} 在原始字符串中的位置,这可以帮助我们确定要替换的子字符串的起始位置和结束位置。如果找到了 {s1} 和 {s2} 并且它们之间有其他字符,我们使用字符串切片和 replace() 方法将 123 替换为 888。最后,我们打印输出替换后的字符串。
注意,这个实现方法只会替换第一个匹配到的子字符串 {s1} 和 {s2} 之间的内容。如果您想替换多个匹配,可以考虑使用 while 循环和字符串方法 find() 来反复查找和替换,直到没有更多匹配为止。 本帖最后由 xiaoxiaodeniao 于 2023-2-18 17:00 编辑
a=‘abc{s1}123{s2}efg’
a=‘abc{s1}888{s2}efg’
{:1_918:}{:1_918:}
替换好了,拿去用吧 import re
init_str = "abc{s1}123{s2}efg"
aim_value = "{s1}目标值{s2}"
res_str = re.sub(r"{s1}.*?{s2}",aim_value,init_str)
print(res_str) wangwei0511 发表于 2023-2-18 16:51
您可以使用 Python 的字符串方法 find() 和 replace() 来实现这个任务。以下是一种可能的实现方法:
s = " ...
咋不允许照搬,这个是对的就可以啊 wangwei0511 发表于 2023-2-18 17:07
咋不允许照搬,这个是对的就可以啊
同意,为什么那么抗拒chatgpt,对就行了! wangwei0511 发表于 2023-2-18 17:07
咋不允许照搬,这个是对的就可以啊
【公告】禁止使用ChatGPT或其他类似AI的答案作为解答回复 sgbyg 发表于 2023-2-18 16:20
print(re.sub(r'{s1}123{s2}', '{s1}888{s2}', 'abc{s1}123{s2}efg'))
感谢,可用
页:
[1]
2