Итак, у меня есть длинный список строк в том же формате, и я хочу найти последний ".". символ в каждом, и замените его на ". -". Я пробовал использовать rfind, но я не могу правильно использовать его для этого.
Поиск последнего вхождения подстроки в строке, заменяя это
Ответ 1
Это должно сделать это
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:]
Ответ 2
Чтобы заменить справа:
def replace_right(source, target, replacement, replacements=None):
return replacement.join(source.rsplit(target, replacements))
При использовании:
>>> replace_right("asd.asd.asd.", ".", ". -", 1)
'asd.asd.asd. -'
Ответ 3
Я бы использовал регулярное выражение:
import re
new_list = [re.sub(r"\.(?=[^.]*$)", r". - ", s) for s in old_list]
Ответ 4
Один лайнер будет:
str=str[::-1].replace(".",".-",1)[::-1]
Ответ 5
a = "A long string with a . in the middle ending with ."
# если вы хотите найти индекс последнего вхождения любой строки, в нашем случае мы # найдем индекс последнего вхождения с
index = a.rfind("with")
# результат будет 44, так как индекс начинается с 0.
Ответ 6
Наивный подход:
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:]