findstring中最后一次出现的子string,将其replace

所以我有一个相同格式的string列表,我想find最后一个“。” 字符,并用“。 – ”代替。 我试过使用rfind,但我似乎无法正确使用它来做到这一点。

这应该做到这一点

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:] 

从右侧取代:

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

正在使用:

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

我会用一个正则expression式:

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

一个class轮将是:

str=str[::-1].replace(".",".-",1)[::-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:]