查找字符串中最后一次出现的子字符串,替换它

时间:2013-01-24 07:29:13

标签: python string parsing

所以我有一长串相同格式的字符串,我想找到最后一个“。”每个字符中的字符,并用“。 - ”替换它。我尝试过使用rfind,但我似乎无法正确使用它。

7 个答案:

答案 0 :(得分:149)

这应该这样做

old_string = "this is going to have a full stop. some written sstuff!"
k = old_string.rfind(".")
new_string = old_string[:k] + ". - " + old_string[k+1:]

答案 1 :(得分:25)

从右边取代:

def replace_right(source, target, replacement, replacements=None):
    return replacement.join(source.rsplit(target, replacements))

使用中:

>>> replace_right("asd.asd.asd.", ".", ". -", 1)
'asd.asd.asd. -'

答案 2 :(得分:13)

我会使用正则表达式:

import re
new_list = [re.sub(r"\.(?=[^.]*$)", r". - ", s) for s in old_list]

答案 3 :(得分:6)

一个班轮将是:

str=str[::-1].replace(".",".-",1)[::-1]

答案 4 :(得分:1)

您可以使用下面的功能替换从右开始的单词的第一个出现。

def replace_from_right(text: str, original_text: str, new_text: str) -> str:
    """ Replace first occurrence of original_text by new_text. """
    return text[::-1].replace(original_text[::-1], new_text[::-1], 1)[::-1]

答案 5 :(得分:0)

a = "A long string with a . in the middle ending with ."

#如果要查找任何字符串最后一次出现的索引,在我们的示例中,我们#将找到with的最后一次出现的索引

index = a.rfind("with") 

#结果将是44,因为索引从0开始。

答案 6 :(得分:-1)

天真的方法:

a = "A long string with a . in the middle ending with ."
fchar = '.'
rchar = '. -'
a[::-1].replace(fchar, rchar[::-1], 1)[::-1]

Out[2]: 'A long string with a . in the middle ending with . -'

Aditya Sihag用单rfind回答:

pos = a.rfind('.')
a[:pos] + '. -' + a[pos+1:]