• 03-04-2025, 11:10:03
    #1
    Selamlar,

    Pythonda bu tabii ki en temel seviye olmasına rağmen bu konuyu açıyorum.Yaptım lakin daha hızlısı veya daha mantıklısı var mı diye merak ediyorum.

    Şimdi;
    1.txt adında bir dosyamız var.Bu dosyamızda tam 5000 satırımız var.Bu 5000 satırımızın sadece 125 tanesi orjinal(bunu çalıştırdığım kodun sonrasında anladım) bu geriye kalanların hepsi farklı.Orjinal derken yani örneğin orada roketbayim yazısı var ama alt satırda tekrardan var gibi.

    Bu 1.txt dosyasında sadece roketbayim yazısının bir tane kalmasını istiyorum ben bunun için 2 farklı yöntem yapıyorum;

    1) 1. satırı çekip diğer 4999 satırla karşılaştırıyorum ve bunu bütün satırlar için yapıyorum ve bu biraz saçma oluyor.
    2) 1. Satırı çekip 1.txt'de aratıyorum ve eğer alternatifi varsa sildiriyorum.

    Lakin benden çok daha iyi olan kişiler vardır ki,bu kişilerin nasıl bir yöntem uyguladıklarını merak ettim.
    Teşekkürler.
  • 03-04-2025, 11:14:02
    #2
    unique_lines = []
    seen = set()
    
    with open("1.txt", "r", encoding="utf-8") as file:
        for line in file:
            if line not in seen:
                seen.add(line)
                unique_lines.append(line)
    
    with open("1_unique.txt", "w", encoding="utf-8") as file:
        file.writelines(unique_lines)
    Bu yöntem, her satırı okurken daha önce eklenip eklenmediğini kontrol eder. Eğer eklenmemişse, satırı unique_lines listesine ekler:
    • seen set'i, daha önce okunan satırları tutar.
    • Her satır set içerisinde aranır; bulunmuyorsa, hem sete hem de unique_lines listesine eklenir.
    • Böylece sadece ilk karşılaşılan kopya dosyada kalır.

      Deneyin bakalım sonuç ne olacak bende Junior seviyedeyim Pythonda
      umarım işinizi görür
      iyi forumlar
  • 03-04-2025, 11:21:51
    #3
    baymobile adlı üyeden alıntı: mesajı görüntüle
    unique_lines = []
    seen = set()
    
    with open("1.txt", "r", encoding="utf-8") as file:
        for line in file:
            if line not in seen:
                seen.add(line)
                unique_lines.append(line)
    
    with open("1_unique.txt", "w", encoding="utf-8") as file:
        file.writelines(unique_lines)
    Bu yöntem, her satırı okurken daha önce eklenip eklenmediğini kontrol eder. Eğer eklenmemişse, satırı unique_lines listesine ekler:
    • seen set'i, daha önce okunan satırları tutar.
    • Her satır set içerisinde aranır; bulunmuyorsa, hem sete hem de unique_lines listesine eklenir.
    • Böylece sadece ilk karşılaşılan kopya dosyada kalır.

      Deneyin bakalım sonuç ne olacak bende Junior seviyedeyim Pythonda
      umarım işinizi görür
      iyi forumlar
    Teşekkür ederim örneğin ben bunu bilmiyordum çoook teşekkür ederim
  • 03-04-2025, 11:34:10
    #4
    with open("1.txt", "r", encoding="utf-8") as file:
        unique_words = set(file.read().splitlines())  # Satırları set içine al, tekrar edenleri kaldır
    
    with open("1_unique.txt", "w", encoding="utf-8") as file:
        file.write("\n".join(sorted(unique_words)))  # Benzersiz kelimeleri alfabetik sıralı kaydet
    İş görmesi lazım. Sıralamaya gerek yoksa sorted kısmını silersiniz.
  • 03-04-2025, 11:36:23
    #5
    Satırları listeye ekleyip, listenin içinde var mı kontrol etmek muhtemelen en iyi çözüm olacaktır. Ancak ek bilgi olarak python kullanman gerekmiyor ise notepad++ ile Düzen > Satır İşlemleri > Aynı Satırları Kaldır tuşunu kullanarak hızlıca halledebilirsin.