Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะแทนที่การเกิดขึ้นล่าสุดของนิพจน์ในสตริงใน Python ได้อย่างไร


ปัญหานี้สามารถแก้ไขได้โดยการย้อนกลับสตริง ย้อนกลับสตริงที่จะแทนที่ แทนที่สตริงด้วยการย้อนกลับของสตริงที่จะแทนที่ด้วย และสุดท้ายย้อนกลับสตริงเพื่อให้ได้ผลลัพธ์

คุณสามารถย้อนกลับสตริงได้โดยใช้สัญกรณ์สไลซ์อย่างง่าย - [::-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'