แทนที่สตริงใน Python | แทนที่สตริงหลาม [2022]

เผยแพร่แล้ว: 2021-01-02

การแทนที่อักขระและสตริงใน Python เป็นงานที่สำคัญเมื่อพูดถึงการล้างข้อมูลหรือการประมวลผลข้อความ ข้อมูลของคุณอาจมีปัญหาในการจัดรูปแบบด้วยอักขระขยะที่ต้องลบ หมวดหมู่อาจมีปัญหาการสะกด ฯลฯ นอกจากนี้ ในขณะที่การประมวลผลข้อความล่วงหน้าสำหรับปัญหาตาม NLP การแทนที่สตริงเป็นขั้นตอนพื้นฐานและสำคัญที่สุดในขณะเตรียมข้อมูลที่เป็นข้อความ

ในบทช่วยสอนนี้ เราจะพูดถึงหลายวิธีในการแทนที่สตริงประเภทต่างๆ หากคุณสนใจที่จะเข้าสู่วิทยาศาสตร์ข้อมูล โปรดดูใบรับรองวิทยาศาสตร์ข้อมูลของเรา ในตอนท้ายของบทช่วยสอนนี้ คุณจะมีความรู้ดังต่อไปนี้:

  • Python แทนที่ () วิธีการ
  • Regex sub() วิธีการ
  • เข้าร่วม () และตัวกรอง ()
  • การแทนที่ข้อมูลตัวเลขในสตริง

สารบัญ

หลามแทนที่ ()

วิธีการ แทนที่ (old_str, new_str, นับ) ประกอบด้วย 3 อาร์กิวเมนต์:

  • old_str: สตริงหรือส่วนหนึ่งของสตริงที่ต้องการเปลี่ยน
  • new_str: สตริงที่ต้องเปลี่ยนสตริงเก่า
  • count: จำนวนครั้งที่จำเป็นต้องเปลี่ยนสตริงนั้น

มาดูตัวอย่างกันเพื่อทำความเข้าใจการทำงาน

แทนที่ครั้งเดียว

Mystr = "นี่คือสตริงตัวอย่าง"
Newstr = Mystr.replace ( 'คือ' , 'เคยเป็น' )

#ผลลัพธ์:
Thwas เป็นสตริงตัวอย่าง

หากคุณจำได้ Strings ใน Python จะไม่เปลี่ยนรูป ดังนั้นเมื่อเราเรียกใช้เมธอดการแทนที่ จะทำให้อ็อบเจ็กต์สตริงอื่นมีข้อมูลที่แก้ไขเป็นหลัก นอกจากนี้ เราไม่ได้ระบุพารามิเตอร์การนับในตัวอย่างข้างต้น หากไม่ได้ระบุไว้ วิธีการแทนที่จะแทนที่การเกิดขึ้นทั้งหมดของสตริง

แทนที่หลายรายการ

Mystr = "นี่คือสตริงตัวอย่าง"
Newstr = Mystr.replace( “s” , “X” )

#ผลลัพธ์:
ThiX iX และ Xample Xtring

แทนที่ n ครั้งแรกหลายครั้ง

ถ้าคุณต้องการเพียง N เกิดขึ้นครั้งแรก

Mystr = "นี่คือสตริงตัวอย่าง"
Newstr = Mystr.replace( “s” , “X” , 3 )

#ผลลัพธ์:
ThiX iX a Xample string

แทนที่หลายสตริง

ในตัวอย่างข้างต้น เราได้แทนที่สตริงหนึ่งสตริงด้วยจำนวนครั้งที่ต่างกัน ทีนี้จะเกิดอะไรขึ้นถ้าคุณต้องการแทนที่สตริงต่าง ๆ ในสตริงใหญ่เดียวกัน เราสามารถเขียนฟังก์ชันที่มีประสิทธิภาพและทำให้มันเสร็จโดยใช้วิธีการเดียวกัน

พิจารณาตัวอย่างข้างต้น แต่ตอนนี้ เราต้องการแทนที่ "h", "is" และ "ng" ด้วย "X"

def MultipleStrings (mainStr, strReplaceList, newStr) :
# วนซ้ำสตริงที่จะแทนที่
สำหรับ องค์ประกอบ ใน strReplaceList :
# ตรวจสอบว่าสตริงอยู่ในสตริงหลักหรือไม่
ถ้า องค์ประกอบ ใน mainStr :
#เปลี่ยนสาย
mainStr = mainStr.replace (องค์ประกอบ newStr)

กลับ หลักStr

Mystr = "นี่คือสตริงตัวอย่าง"
Newstr = MultipleStrings(Mystr, [ 'h' , 'is' , 'ng' ] , “X” )

#ผลลัพธ์:
TXX X ตัวอย่าง striX

อ่าน: Python Tutorial

แทนที่ด้วย regex

regex ของ Python เป็นโมดูลสำหรับจัดการกับข้อมูลข้อความโดยเฉพาะ ไม่ว่าจะเป็นการค้นหาสตริงย่อย การแทนที่สตริง หรืออะไรก็ได้ Regex มีฟังก์ชัน sub() เพื่อค้นหาและแทนที่/แทนที่สตริงย่อยได้อย่างง่ายดาย มาดูไวยากรณ์และกรณีการใช้งานบางอย่างกัน

ฟังก์ชัน regex.sub(pattern, replacement, original_string) รับ 3 อาร์กิวเมนต์:

  • รูปแบบ: สตริงย่อยที่ต้องจับคู่และแทนที่
  • การแทนที่: สามารถเป็นสตริงที่ต้องวาง หรือฟังก์ชันที่เรียกได้ซึ่งคืนค่าที่จำเป็นต้องวาง
  • original_string: สตริงหลักที่ต้องแทนที่สตริงย่อย

เช่นเดียวกับวิธีการแทนที่ regex ยังสร้างวัตถุสตริงอื่นด้วยสตริงที่แก้ไข มาดูตัวอย่างการทำงานกัน

กำลังลบช่องว่าง

ช่องว่างสามารถใช้เป็นอักขระพิเศษและแทนที่ด้วยอักขระอื่นๆ ในตัวอย่างด้านล่าง เราตั้งใจที่จะแทนที่ช่องว่างด้วย "X"

นำเข้า อีกครั้ง
Mystr = "นี่คือสตริงตัวอย่าง"
# แทนที่ช่องว่างทั้งหมดใน Mystr ด้วย 'X'
Newstr = re.sub( r”\s+” , 'X' , Mystr)

#ผลลัพธ์:
นี้XisXaXsampleXstring


อย่างที่เราเห็น ช่องว่างทั้งหมดถูกแทนที่ รูปแบบถูกกำหนดโดย r”\s+” ซึ่งหมายถึงอักขระช่องว่างทั้งหมด

การลบอักขระพิเศษทั้งหมด

ในการลบอักขระพิเศษทั้งหมด เราจะส่งรูปแบบที่ตรงกับอักขระพิเศษทั้งหมด

นำเข้า อีกครั้ง
นำเข้า สตริง
Mystr = “จังหวะ@@&[(000)]%%$@@66isit$$#$%-+Str”
รูปแบบ = r'[' + string.punctuation + ']'
# แทนที่อักขระพิเศษทั้งหมดในสตริงด้วย X
Newstr = re.sub(รูปแบบ 'X' , Mystr)

#ผลลัพธ์:
TempoXXXXX000XXXXXXX66isitXXXXXXXStr

การลบสตริงย่อยโดยคำนึงถึงขนาดตัวพิมพ์

ในข้อมูลในชีวิตจริง อาจมีบางกรณีที่อาจมีคำเดียวกันหลายเวอร์ชันที่มีอักขระตัวพิมพ์ใหญ่และตัวพิมพ์เล็กต่างกัน หากต้องการนำออกทั้งหมด ให้แยกคำทั้งหมดแยกกันเนื่องจากรูปแบบจะไม่ได้ผล ฟังก์ชัน regex sub() ใช้แฟ ล็ก re.IGNORECASE เพื่อละเว้นกรณี เรามาดูกันว่ามันทำงานอย่างไร

นำเข้า อีกครั้ง
Mystr = “นี่คือตัวอย่าง Istring”
# แทนที่สตริงย่อยในสตริงด้วยวิธีที่ไม่คำนึงถึงขนาดตัวพิมพ์
Newstr = re.sub ( r'is' , '**' , Mystr, flags=re.IGNORECASE)

#ผลลัพธ์:
Th** ** ตัวอย่าง ** tring

การลบอักขระหลายตัวโดยใช้ regex

ฟังก์ชัน regex สามารถลบอักขระหลายตัวออกจากสตริงได้อย่างง่ายดาย ด้านล่างเป็นตัวอย่าง

นำเข้า อีกครั้ง
Mystr = "นี่คือสตริงตัวอย่าง"
รูปแบบ = r'[hsa]'
# ลบอักขระ 'h', 's' และ 'a' ออกจากสตริง
Newstr = re.sub(รูปแบบ , Mystr)

#ผลลัพธ์:
Ti ฉัน mple tring

แทนที่โดยใช้ join()

อีกวิธีหนึ่งในการลบหรือแทนที่อักขระคือการวนซ้ำผ่านสตริงและตรวจสอบกับเงื่อนไขบางอย่าง

charList = [ 'h' , 's' , 'a' ]
Mystr = "นี่คือสตริงตัวอย่าง"
# ลบอักขระทั้งหมดในรายการ ออกจากสตริง
Newstr = .join((องค์ประกอบ สำหรับ องค์ประกอบ ใน Mystr หาก องค์ประกอบ ไม่ อยู่ใน charList ))

#ผลลัพธ์:
Ti ฉัน mple tring

การแทนที่โดยใช้ join() และ filter()

ตัวอย่างข้างต้นสามารถทำได้โดยใช้ฟังก์ชันตัวกรอง

Mystr = "นี่คือสตริงตัวอย่าง"
charList = [ 'h' , 's' , 'a' ]
# ลบอักขระทั้งหมดในรายการ ออกจากสตริง
Newstr = “” .join(ตัวกรอง ( lambda k: k ไม่ อยู่ใน charList , Mystr))

#ผลลัพธ์:
ฉันกำลังพยายาม

ต้องอ่าน: แอปพลิเคชั่น Python ที่น่าสนใจในโลกแห่งความจริง

การแทนที่ตัวเลข

หลายครั้งที่ข้อมูลตัวเลขยังปรากฏอยู่ในสตริงที่อาจจำเป็นต้องลบออกและประมวลผลแยกกันเป็นคุณลักษณะอื่น มาดูตัวอย่างกันเพื่อดูว่าจะนำไปปฏิบัติได้อย่างไร

ใช้ regex

พิจารณาสตริงด้านล่างที่เราจำเป็นต้องลบข้อมูลตัวเลข

Mystr = “สตริงตัวอย่าง9211 ของปี 20xx”
รูปแบบ = r'[0-9]'
# จับคู่ตัวเลขทั้งหมดในสตริงและแทนที่ด้วยสตริงว่าง
Newstr = re.sub(รูปแบบ “” , Mystr)

#ผลลัพธ์:
สตริงตัวอย่างของปีxx

ในโค้ดด้านบนนี้ เราใช้รูปแบบการจับคู่ r'[0-9]' เพื่อจับคู่ตัวเลขทั้งหมด

ใช้ฟังก์ชัน join()

นอกจากนี้เรายังสามารถวนซ้ำตามสตริงและกรองตัวเลขออกโดยใช้ เมธอด isdigit() ซึ่งจะคืนค่า เท็จ สำหรับตัวอักษร

Mystr = “สตริงตัวอย่าง9211 ของปี 20xx”
# วนซ้ำอักขระในสตริงและรวมอักขระทั้งหมดยกเว้นตัวเลข
Newstr = “” .join((รายการ สำหรับ รายการ ใน Mystr หาก ไม่ใช่ item.isdigit()))

#ผลลัพธ์:
สตริงตัวอย่างของปีxx

ใช้ join() และ filter()

ในทำนองเดียวกัน เราสามารถใส่เงื่อนไขการกรองในฟังก์ชันตัวกรองเพื่อส่งคืนเฉพาะอักขระที่คืน ค่า True

Mystr = “สตริงตัวอย่าง9211 ของปี 20xx”

# กรองตัวเลขทั้งหมดจากอักขระในสตริง & เข้าร่วมอักขระที่เหลือ
Newstr = “” .join(ตัวกรอง ( รายการ แลมบ์ดา : ไม่ใช่ item.isdigit (), Mystr))

#ผลลัพธ์:
สตริงตัวอย่างของปีxx

ก่อนที่คุณจะไป

เราได้กล่าวถึงตัวอย่างมากมายที่แสดงวิธีต่างๆ ในการลบหรือแทนที่อักขระ/ช่องว่าง/ตัวเลขจากสตริง เราขอแนะนำให้คุณลองใช้ตัวอย่างและวิธีต่างๆ ในการทำตัวอย่างด้านบนและตัวอย่างของคุณเองเพิ่มเติม

หากคุณอยากเรียนรู้เกี่ยวกับ python, data science, ลองดู IIIT-B & upGrad's Executive PG Program in Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 10 แบบ, เวิร์กช็อปภาคปฏิบัติ, การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม แบบตัวต่อตัวกับที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

จำเป็นต้องใช้วิธีการแทนที่สตริงใน Python คืออะไร?

ฟังก์ชันนี้จะมีประโยชน์มากเมื่อคุณใช้เทคนิคการล้างข้อมูล อักขระที่ไม่จำเป็นหรือขยะสามารถลบออกได้อย่างง่ายดายโดยใช้ฟังก์ชันนี้ การแทนที่สตริงหรืออักขระไม่เพียงแต่ใช้ในการล้างข้อมูลเท่านั้น แต่ยังใช้ในการประมวลผลปัญหาของ NLP ด้วย
การมีวิธีการประเภทนี้เพื่อจัดการกับสตริงมีความสำคัญ เนื่องจากสาขาวิทยาศาสตร์ข้อมูลทั้งหมดเกี่ยวข้องกับข้อมูลจำนวนมาก

ข้อดีของการใช้ชนิดข้อมูลสตริงคืออะไร?

สตริงมีประโยชน์เนื่องจากคุณสามารถจัดเก็บข้อมูลจำนวนมากได้อย่างง่ายดายโดยใช้ประเภทข้อมูลนี้ Python รองรับวิธีการที่มีประโยชน์มากมายในการดำเนินการกับสตริง นอกจากนี้ สตริงยังสามารถเปลี่ยนแปลงได้ใน Python ซึ่งช่วยลดการสร้างข้อผิดพลาดและมีราคาไม่แพงอีกด้วย
สตริงเป็นหนึ่งในประเภทข้อมูลในตัวที่ใช้มากที่สุดใน Python ไม่เฉพาะใน python เท่านั้น แต่ภาษาอื่นๆ อีกหลายภาษายังสนับสนุนสิ่งนี้เป็นประเภทข้อมูลที่กำหนดไว้ล่วงหน้าและสนับสนุนวิธีการต่างๆ ในการใช้งาน