Sadece istenilen maillerin alınması

Merhabalar,
.txt dosyamızın içerisinde mail adresleri var ve biz sadece sonu @gmail.com ile bitenleri getirmek istiyoruz. Bunun için nasıl bir yol izlenmeli?

mailler = open("mailler.txt","r",encoding="utf-8").readlines()

mail adreslerini bu şekilde bir listede topladım ama bunların içinden sadece sonu @gmail.com veya @hotmail.com ile bitenleri nasıl süzgeçten geçirebilirim?

for mail in mailler:
    if "@gmail.com" in mail:
       # mail değişkeni ile artık burada ne yapmak istersen kullanabilirsin.

Bu şekilde yapabilirsin.

3 Beğeni

Merhaba, stringlerin endswith methodu daha pratik gibi bence.

ha bir de kodu şöyle patlatabilirdim belki :slight_smile:

@gmail.com@hotmail.com (iiy bir case değil de yine de belritmek istedim.)

1 Beğeni
>>> e_mail = "@hotmail.com@gmail.com"
>>> e_mail.endswith("@gmail.com")
True

Aslında bu da patlayabilir :slight_smile:
Patlamaması için biraz daha kurcalamak ve if blokları yerleştirmek gerekiyor.

Bana kalırsa split("@") de bir seçenek olabilir.
split ettikten sonra açığa çıkan eleman sayısının 2 olup olmadığı, 2. elemanın gmail.com'a eşit olup olmadığı kontrol edilebilir.

for mail in mailler:
    elemanlar = mail.split("@")
    if len(elemanlar) == 2 and elemanlar[1] == "gmail.com":
        print("Kestane Balının Diyarı Zonguldak'tan Tüm Dünya'ya Selamlar.")
2 Beğeni

Eline sağlık gerçekten çok sade bir çözüm <3

mail = open("text.txt","r",encoding="utf-8").readlines()
mailler = []
# text dosyasındaki maillerin sonunda \n olduğu için .endswith düzgün çalışmıyordu 
# o yüzden \n leri silip yeni bir listenin içine attım(varolan listedeki \n leri silmeyi bilmiyorum :) )

for dongu in range(len(mail)):
    mailler.append(mail[dongu].strip('\n'))
    # burda \n leri silip yeni listeye aktardım

while True:
    mailbul = input("Aranacak mail adresini girin:\n")
    for x in mailler:
        if x.endswith(mailbul):
            print(x)

sonuç olarak elinize sağlık .endswith tam olarak aradığım şeydi

1 Beğeni