如何删除除任何字符串中的第一个,除了第一个字符串外,所有发生的所有情况



给定一个字符串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

最新更新