• 19-11-2021, 19:59:40
    #1
    Elimde bu şekilde bir veri var;

    teststring:1^:P&:b:teststring

    Normalde iki : arasında regex işlemi yapıp teststring ve teststring olarak ayırabiliyorum.

    Fakat işin içine ortada bir adet daha : girdiğinde parsing işinde patlıyor.

    teststring ve 1^ olarak alıyor.


    İşlemi her satır için önce en soldan başlayıp : kısmına kadar, ardından aynı satır için en sağdan başlayıp ilk : e kadar yap kısmında döngüyü bir türlü kafamda kuramadım.

    Örnek veri için;
    1^:P&:b

    Ben bu kısımdan kurtulmak istiyorum. (teststring kısımlarının uzunlukları farklı)
  • 19-11-2021, 20:12:46
    #2
    çıkartmak istediğiniz kısım kesin iki nokta ile başlayıp iki nokta ile mi bitiyor ve içinde her zaman aynı olan değerler neler. her zaman & var mı içinde mesela.
  • 19-11-2021, 20:16:46
    #3
    Kubilay_ adlı üyeden alıntı: mesajı görüntüle
    çıkartmak istediğiniz kısım kesin iki nokta ile başlayıp iki nokta ile mi bitiyor ve içinde her zaman aynı olan değerler neler. her zaman & var mı içinde mesela.
    teststring:1^:P&:b:teststring


    Satırlarda ortak olan tek şey iki nokta üst üste kısımları. Şöyle düşünün data:data:data

    ortadaki data içi tamamen random şeyler :: var %% var gibi.

    Fakat en sol ve sağdaki datalarda bu semboller yok. Bir şekilde soldan sağa giderken ilk iki nokta üstüne kadar alacağım. Sonra aynı işlemi sağdan sola tararken iki nokta gelene kadar keseceğim. Son hali data:data şeklinde kalacak.
  • 19-11-2021, 20:32:45
    #4
    baştaki ve sondaki datanın içinde : yoksa regex'e gerek yok. : lere göre parçalayıp sadece baştaki ve sondaki kısmı alabilirsiniz.

    python örneği
    string = "data1:data2:data3"
    print(':'.join([string.split(':')[i] for i in (0,-1)]))

    çıktı:
    data1:data3
  • 19-11-2021, 21:10:47
    #5
    Kubilay_ adlı üyeden alıntı: mesajı görüntüle
    baştaki ve sondaki datanın içinde : yoksa regex'e gerek yok. : lere göre parçalayıp sadece baştaki ve sondaki kısmı alabilirsiniz.

    python örneği
    string = "data1:data2:data3"
    print(':'.join([string.split(':')[i] for i in (0,-1)]))

    çıktı:
    data1:data3
    Python pek bilmediğim için soruyorum

    bunu 5000 satırlı txt file içine nasıl uygularım?

    file = open("hastalistem.txt", encoding="utf8")
    content = file.read()
    print(':'.join([content.split(':')[i] foriin (0,-1)]))

    Böyle yaptığım zaman sadece 5000. satırı print ediyor.

    forlineincontent:

    ile denedim fakat yine sürekli 5000. satırı yazdırıyor. Bir kerelik bir işlem olduğu için yapsam kurtulsam diye bakıyorum
  • 19-11-2021, 21:14:17
    #6
    trust adlı üyeden alıntı: mesajı görüntüle
    python pek bilmediğim için soruyorum

    bunu 5000 satırlı txt file içine nasıl uygularım?

    file = open("hastalistem.txt", encoding="utf8")
    content = file.read()
    print(':'.join([content.split(':')[i] foriin (0,-1)]))

    böyle yaptığım zaman sadece 5000. Satırı print ediyor.

    forlineincontent:

    ile denedim fakat yine sürekli 5000. Satırı yazdırıyor. Bir kerelik bir işlem olduğu için yapsam kurtulsam diye bakıyorum
    Alıntı
    with open("hastalistem.txt", encoding="utf8") as file:
    For line in file.readlines():
    Print(':'.join([line.strip().split(':')[i] for i in (0,-1)]))
    111
  • 19-11-2021, 21:15:49
    #7
    Kubilay_ adlı üyeden alıntı: mesajı görüntüle
    with open("hastalistem.txt", encoding="utf8") as file:
    for line in file.readlines():
    print(':'.join([line.strip().split(':')[i] for i in (0,-1)]))

    Mükemmel çalıştı, Python çok zevkliymiş. Print sonucunu txt file a yazdırmayı da ben buluyorum. Teşekkür ederim.