แยกสตริงด้วยตัวคั่นในไพ ธ อน


195

วิธีการแยกสตริงนี้โดยที่__ตัวคั่น

MATCHES__STRING

เพื่อให้ได้ผลลัพธ์ของ['MATCHES', 'STRING']?



8
มันมีค่าที่จะอ่านเอกสารมาตรฐานของไพ ธ อนและพยายามทำความเข้าใจกับโปรแกรมบางตัวที่คนอื่นทำเพื่อเริ่มเข้าใจพื้นฐานของ Python ฝึกฝนและคัดลอก / แก้ไขเป็นเครื่องมือที่ดีเยี่ยมในการเรียนรู้ภาษา
Tony Veijalainen

คำตอบ:


327

คุณสามารถใช้str.splitฟังก์ชั่น:string.split('__')

>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']

1
ฉันสงสัยว่าอะไรคือความแตกต่างระหว่างตัวอย่างแรก (โดยใช้ split ()) และตัวอย่างที่สอง (พร้อมกับ for loop)
EndenDragon

4
@EndenDragon for for loop จะนำไปใช้โดยอัตโนมัติx.strip()และส่งคืนรายการการแข่งขันโดยไม่มีช่องว่างด้านใดด้านหนึ่ง มารอยู่ในรายละเอียด
Sébastien Vercammen

เฮ้เนื่องจากนี่เป็นคำถามที่ได้รับความนิยมมากฉันจึงแก้ไขเพื่อถามเฉพาะคำถาม 1 ข้อและลบส่วนที่มีช่องว่างรอบตัวคั่นเพราะมันไม่ชัดเจนว่า OP จะเกิดขึ้นได้อย่างไร (เนื่องจากไม่เคยมีคำถามใน คำถาม). ฉันคิดว่าคำถาม (และคำตอบ) มีประโยชน์มากกว่าด้วยวิธีนี้ แต่คุณสามารถย้อนกลับการแก้ไขทั้งหมดหากคุณไม่เห็นด้วย
Aran-Fey

4

คุณอาจสนใจcsvโมดูลที่ออกแบบมาสำหรับไฟล์ที่คั่นด้วยเครื่องหมายจุลภาค แต่สามารถแก้ไขได้อย่างง่ายดายเพื่อใช้ตัวคั่นที่กำหนดเอง

import csv
csv.register_dialect( "myDialect", delimiter = "__", <other-options> )
lines = [ "MATCHES__STRING" ]

for row in csv.reader( lines ):
    ...

1

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

date, time, event_name = ev.get_text(separator='@').split("@")

หลังจากโค้ดบรรทัดนี้ตัวแปรทั้งสามจะมีค่าจากสามส่วนของตัวแปรev

ดังนั้นหากตัวแปร ev มีสตริงนี้และเราใช้ตัวคั่น '@':

Sa. , 23. März @ 19: 00 @ Klavier + Orchester: SPEZIAL

จากนั้นหลังจากการดำเนินการแยกตัวแปร

  • วันที่จะมีค่า "Sa. , 23. März"
  • เวลาจะมีค่า "19:00"
  • event_nameจะมีค่า "Klavier + Orchester: SPEZIAL"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.