替换字符串中最后一次出现的子字符串的方法更快?

时间:2018-04-07 14:37:29

标签: python python-3.x performance optimization

我有一个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:]

哪条线可能更快? 另外,有没有更快的方法来实现我的目标?

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+。

相关问题