web-dev-qa-db-ja.com

string内の部分文字列の最後の出現を検索し、それを置き換えます

したがって、同じ形式の文字列の長いリストがあり、最後の「。」を見つけたいと思います。各文字を「。-」に置き換えます。 rfindを使用してみましたが、これを適切に利用できないようです。

96
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:]
149
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. -'
25
Varinder Singh

私は正規表現を使用します:

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

ライナーは次のとおりです。

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

6
mazs

以下の関数を使用して、右から最初に出現するWordを置き換えることができます。

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]
1
bambuste
a = "A long string with a . in the middle ending with ."

#文字列の最後の出現のインデックスを検索したい場合、この場合は#withの最後の出現のインデックスを検索します

index = a.rfind("with") 

#インデックスは0から始まるため、結果は44になります。

0
Arpan Saini