Split Komutu Hatası

Merhaba Arkadaşlar;
Arkadaşlar aşağıda soruyu yazdım ve sorunun çözümü hakkında uğraşıyordum. Yazdığım kod kısmında

satir = [-1] 
liste = satir.split(",")

burada hata alıyorum. Hata ise AttributeError: ‘list’ object has no attribute ‘split’
Benim burada ki hatam nerede arkadaşlar? Yapmak istediğim döngüyle dosyanın içinde ki her kelimeyi virgül “,” ile ayırmak sonra ayrılanları listeye aktarıp, kişinin ismini klavyeden girince o kişinin numarasını göstermesini istiyorum ama kodu çalıştırınca
liste = satir.split(",") burada hata alıyorum.

Hatanın türkçede anlamı list objesinin (nesnesinin) split özelliğine sahip olmadığını yorumladım. Büyük ihtimalle yazım hatası var. Yardım ederseniz sevinirim.

İyi Çalışmalar Dilerim.

Soru: Rehbere_Kisi_Ekle adında fonksiyon tanımlanacak, bu fonksiyon; parametre olarak isim soyisism, telefon ve email bilgilerini alacak ve dosyaya kaydedilecektir. Bu değerler klavyeden ile kullanıcıdan alınacaktır.

Yazdığım Kod:

def Telefon_Numarasi_Bul(self):
        file = open("Telefon_Rehberi1.txt","r",encoding = "utf-8")
        self.bul = input ("Aranacak İsim:")
        for i in file:
                satir = i[:-1]
                liste = satir.split(",")
                if(liste[-1] == self.bul):
                    print(liste[1])

Hata:

Traceback (most recent call last):
  File "<pyshell#179>", line 1, in <module>
    dosya.Telefon_Numarasi_Bul()
  File 
    liste = satir.split(",")
AttributeError: 'list' object has no attribute 'split'

Bu satiri yazmanin amaci nedir? Ne is yaptigini soyleyeyim: satir diye bir liste olusturuyor. Liste tek elemanli ve bu elemanin degeri -1. Acaba satir = i mi demek istedin?

aslında orası
satir = i[:-1]
şeklinde olacak. Orada yapmak istediğim dosyanın içinde ki bulunanları satir listesine koymak, daha sonra liste değişkeni için split komutu yardımı ile bunları ayırmak.
Zaten sonrasında bulmak istediğim kelimeyi girince bana o kişinin numarasını vermesini istiyorum.

Affedin python da yeni olduğum için yazım hataları oluyor.

Bilgilendirme için teşekkür ederim.

Ben affederim de bilgisayar affetmez :​)

Fakat; kodu update ettin de hatayi da ettin mi? Calisiyor bende cunku, hata almiyorum.

Evet, normalde çalışıyor kod ama

def Telefon_Numarasi_Bul(self): #hata kod çalışıyor ama göstermiyor.
        bul = input ("Aranacak İsim:")
        file = open("Telefon_Rehberi1.txt","r+",encoding = "utf-8")
        for i in file:
            satir = i[:-1]
            liste = satir.split(",")
            if(liste[-1] == bul):
                print(liste[1])
            else:
                print("hatalı kullanım")

olunca hatalı kullanım oluyor. if kısmında sorun var onu çözmekle uğraşıyorum :slight_smile:

siz listenin 1. indexi çektiriyorsunuz peki kullanıcının girmiş olduğu değeri nereden biliyorsunuz 1. indexi çektiriyorsunuz split’in verdiği çıktıyı bilip ezbere iş yapmak olur bu ileride bu telefon rehberi txt dosyasını başka bilinmeyen bir txt den çekerseniz ne olacak ?

liste[-1] de hangi değer var? Editörünüzün “debug” fonksiyonu ile kontrol ediniz.

Kod gayet calisiyor, tek sorunu gereksiz bir self parametresi almasi.

Telefon_Rehberi1.txt'yi goremedigimiz icin karsilikli surunuyoruz iste boyle 4 gundur.

Arkadaşlar hatayı buldum. Hatanın oluşma sebebi listenin [-1] deki değeri, benim istediğim değeri almamasından kaynaklanıyormuş.

Düzeltmiş kodu buraya koyuyorum.

def Telefon_Numarasi_Bul(self): #+
        bul = input ("Aranacak İsim:")
        file = open("Telefon_Rehberi1.txt","r+",encoding = "utf-8")
        for i in file:
            satir = i[:]
            liste = satir.split(",")
            if(liste[0] == bul):
                print(liste[1])

İlk yazdığım kod :

            satir = i[:-1]
            liste = satir.split(",")

Hatayı bulduğum yer ise;

            satir = i[:]
            liste = satir.split(",")

Benim tahmin ettiğim hata listeyi tersten başlatıyordum. Benim istediğim listenin ilk elemanıydı. Bu yüzden girdiğim liste düzeninde hatayı bu şekilde bulabildim.

Arkadaşlar ilgilendiğiniz için teşekkür ederim.

Istediğiniz listenin ilk elamanı ise : neden kullandınız bu bastan sonra kadar tüm elemanları verir yerine 0. Indexi bastırırsanız daha doğru

Pythonda yeni olduğum için çok fazla hakim değilim, bilgilendirme için teşekkür ederim.