繁体   English   中英

如何删除子字符串中除第一个字符串外的所有子字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM