it-swarm.com.ru

Нахождение последнего появления подстроки в строке, заменяя это

Поэтому у меня есть длинный список строк в одном формате, и я хочу найти последний "." символ в каждом, и замените его на «. -». Я пытался использовать rfind, но я не могу использовать его правильно, чтобы сделать это.

89
Adam Magyar

Это должно сделать это

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:]
141
Aditya Sihag

Для замены справа:

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

В использовании:

>>> replace_right("asd.asd.asd.", ".", ". -", 1)
'asd.asd.asd. -'
24
Varinder Singh

Я бы использовал регулярное выражение:

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

Один лайнер будет: 

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

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

# если вы хотите найти индекс последнего вхождения любой строки, в нашем случае мы # найдем индекс последнего вхождения с

index = a.rfind("with") 

# результат будет 44, так как индекс начинается с 0. 

0
Arpan Saini