给定一个字符串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))
此反向拆分text
在找到query
的位置(从而将其删除(,除了最后一次出现(因此-1
(,然后加入所有分片。
一种简单的方法是使用slicing
。
text = 'cccsumoxxxsumoppqqsumovvvvsumo'
query = 'sumo'
first = text.index(query) + len(query)
text = text[:first] + text[first:].replace(query, "")
print(text)
输出:
cccsumoxxxppqqvvvv