Bir dizeyi python'daki bir sınırlayıcıya bölme


195

Bu dize __ayırıcı nerede bölünür

MATCHES__STRING

Çıktı almak için ['MATCHES', 'STRING']?



8
Python standart belgelerini okumaya ve başkalarının Python'un temellerini kavramaya başlamak için yaptıkları birkaç programı anlamaya çalışmak önemlidir. Uygulama ve kopyalama / değiştirme, dili öğrenmek için harika araçlardır.
Tony Veijalainen

Yanıtlar:


327

str.splitİşlevi kullanabilirsiniz :string.split('__')

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

1
Ben merak ediyorum, ilk örnek (sadece split () kullanarak) ve ikinci örnek (bir for döngüsü ile) arasındaki fark nedir?
EndenDragon

4
@EndenDragon for döngüsü x.strip(), her iki tarafta boşluk olmadan otomatik olarak bir eşleşme listesi uygular ve döndürür. Şeytan Ayrıntıda.
Sébastien Vercammen

Hey, bu çok popüler bir soru olduğu için, sadece 1 özel soru sormak için düzenledim ve ayırıcı etrafındaki boşluklarla parçayı kaldırdım çünkü OP'nin ne olmasını beklediği net değildi ( soru). Sorunun (ve cevapların) bu şekilde daha yararlı olduğunu düşünüyorum, ancak katılmıyorsanız tüm düzenlemeleri geri almaktan çekinmeyin.
Aran-Fey

4

csvVirgülle ayrılmış dosyalar için tasarlanmış olan, ancak özel bir sınırlayıcı kullanmak üzere kolayca değiştirilebilen modülle ilgilenebilirsiniz .

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

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

1

Dizede iki veya daha fazla (aşağıdaki örnekte üç tane) öğeniz varsa, bu öğeleri ayırmak için virgül kullanabilirsiniz:

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

Bu kod satırından sonra, üç değişken, ev değişkeninin üç bölümünden değerlere sahip olacaktır.

Yani, ev değişkeni bu dizeyi içeriyorsa ve '@' ayırıcısını uygularsak:

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

Sonra, bölme işleminden sonra değişken

  • tarih "Sa., 23. März" değerine sahip olacak
  • zaman değeri "19:00" olacaktır
  • event_name "Klavier + Orchester: SPEZIAL" değerine sahip olacak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.