แทนที่สตริงใน 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 เท่านั้น แต่ภาษาอื่นๆ อีกหลายภาษายังสนับสนุนสิ่งนี้เป็นประเภทข้อมูลที่กำหนดไว้ล่วงหน้าและสนับสนุนวิธีการต่างๆ ในการใช้งาน