pythonで一番後ろから、一致する文字列を変更したいです。


pythonで一番後ろから、一致する文字列を変更したいです。

例えば、

[code]

    example_str = "shesheshesh"
    
[/code]

一番後ろがshだった場合XYZにしたいです。（なのでsheshesheshe）の場合変更はしない。

[code]

    "sheshesheXYZ"
    
[/code]

repalceを使うと、shすべてがshになってしまいますし、オプショナルの第三引数に数字を渡しても頭からの何個めまでかという指定しかできないのでどうしようか悩んでいます。




そうした固定のパターンならば、スライスが使えるでしょう。  
こんな風になります。

[code]

    if example_str[-2:] == "sh":
        example_str = example_str[:-2] + "XYZ"
    
[/code]

もう少し汎用性を持たせるなら、こんな感じで`search_str`と`replace_str`を(かつ`example_str`も)パラメータにした関数を作るとかすれば良いでしょう。

[code]

    search_str = "sh"
    replace_str = "XYZ"
    
    search_len = -(len(search_str))
    if example_str[search_len:] == search_str:
        example_str = example_str[:search_len] + replace_str
    
[/code]




そうした固定のパターンならば、スライスが使えるでしょう。  
こんな風になります。

[code]

    if example_str[-2:] == "sh":
        example_str = example_str[:-2] + "XYZ"
    
[/code]

もう少し汎用性を持たせるなら、こんな感じで`search_str`と`replace_str`を(かつ`example_str`も)パラメータにした関数を作るとかすれば良いでしょう。

[code]

    search_str = "sh"
    replace_str = "XYZ"
    
    search_len = -(len(search_str))
    if example_str[search_len:] == search_str:
        example_str = example_str[:search_len] + replace_str
    
[/code]

