[英]How to delete all occurences of a substring except the first one in any string
给定一个字符串text
和一个适当的子字符串query
。 如何删除除第一个查询外的所有查询?
例:
text = 'cccsumoxxxsumoppqqsumovvvvsumo'
query = 'sumo'
result: 'cccsumoxxxppqqvvvv'
请注意, replace()
可以指定最大计数,因此您可以使用一些技巧:
text[::-1].replace(query[::-1], '', text.count(query)-1)[::-1]
我会用str.partition
:
def f(text, qry):
pre, sep, suf = text.partition(qry)
return pre + sep + suf.replace(qry, '')
这透明地处理了查询字符串可能存在或可能不存在的情况,并对字符串进行了最小限度的必要处理(不计算查询字符串或切片等)。
一种更简单的方法:
''.join(text.rsplit(query, text.count(query) - 1))
此反向操作将找到query
text
拆分为text
(因此将其删除),最后一次出现的除外(因此为-1
),然后合并所有拆分的text
。
一种简单的方法是使用slicing
。
text = 'cccsumoxxxsumoppqqsumovvvvsumo'
query = 'sumo'
first = text.index(query) + len(query)
text = text[:first] + text[first:].replace(query, "")
print(text)
输出:
cccsumoxxxppqqvvvv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.