ปัญหานี้สามารถแก้ไขได้โดยการย้อนกลับสตริง ย้อนกลับสตริงที่จะแทนที่ แทนที่สตริงด้วยการย้อนกลับของสตริงที่จะแทนที่ด้วย และสุดท้ายย้อนกลับสตริงเพื่อให้ได้ผลลัพธ์
คุณสามารถย้อนกลับสตริงได้โดยใช้สัญกรณ์สไลซ์อย่างง่าย - [::-1] ในการแทนที่สตริง คุณสามารถใช้ str.replace(เก่า ใหม่ นับ) ตัวอย่างเช่น
def rreplace(s, old, new):
return (s[::-1].replace(old[::-1],new[::-1], 1))[::-1]
rreplace('Helloworld, hello world, hello world', 'hello', 'hi') สิ่งนี้จะให้ผลลัพธ์:
'Hello world,hello world, hi world'
อีกวิธีหนึ่งที่คุณสามารถทำได้คือการย้อนกลับการแยกสตริงหนึ่งครั้งบนสตริงเก่าและเข้าร่วมรายการด้วยสตริงใหม่ ตัวอย่างเช่น
def rreplace(s, old, new):
li = s.rsplit(old, 1) #Split only once
return new.join(li)
rreplace('Helloworld, hello world, hello world', 'hello', 'hi') สิ่งนี้จะให้ผลลัพธ์:
'Hello world,hello world, hi world'