我有一个str
,它是" S" s" C" s的组合。每个至少出现一次。
我想找到最后一次出现的" CS"并将其更改为" SC"。
我有两种方法(到目前为止):
P = P[::-1].replace("SC", "CS", 1)[::-1]
和
P = P[:P.rfind("CS")] + "SC" + P[P.rfind("CS") + 2:]
哪条线可能更快? 另外,有没有更快的方法来实现我的目标?
答案 0 :(得分:7)
这是一种方式:
>>> s = 'CSsomethingSCSagainCSsomething'
>>> 'SC'.join(s.rsplit('CS', 1))
CSsomethingSCSagainSCsomething
<强>语法强>:
new_substring.join(str.rsplit(old_substring, occurance))
答案 1 :(得分:2)
在我粗略的时机中,这比rsplit()
和join()
解决方案高出20%:
head, _, tail = string.rpartition('CS')
new_string = f"{head}SC{tail}"
我当然依赖Python 3.6+。