Dosyadan veri okumada sorun


#1
dosya = [('al su iç',), ('susadın mı',),  (None,), ('al su bakalım',), ('gene mi susadın sen? Al bakalım su',),  (None,),  ('al yemek',),  (None,), ('ne yapıyorsun bakalım?',)]

 liste = []

    for kayıt in dosya:
        for satır in kayıt:
            if satır is None:
                satır = ""
            liste.append(satır)

    sonuç = ", ".join(liste)
    print(sonuç)

>>> al su iç, susadın mı, , al su bakalım, gene mi susadın sen? Al bakalım su, , al yemek, , ne yapıyorsun bakalım?```

Veriler "hafiza.txt" adlı dosyadan kopyala-yapıştır olarak alındı. Ama aşagıdaki kodu baş tarafa ekleyince, yani dosyadan okutunca saçmalıyor.
 "hafiza.text" dosyası tablodan süzülerek kaydedilmişti ve içeriği yukarıdaki verilerden ibaret. 

```hafiza = open("hafiza.txt")
dosya = hafiza.readline()
 liste = []  #yeni bir liste oluşturuyoruz
...
...

>>> [, (, ', a, l, , s, u, , i, ç, ', , ), , , (, ', s, u, s, a, d, ı, n, , m, ı, ', , ), , , (, N, o, n, e, , ), , , (, ', a, l, , s, u, , b, a, k, a, l, ı, m, ', , ), , , (, ', g, e, n, e, , m, i, , s, u, s, a, d, ı, n, , s, e, n, ?, , A, l, , b, a, k, a, l, ı, m, , s, u, ', , ), , , (, N, o, n, e, , ), , , (, ', a, l, , y, e, m, e, k, ', , ), , , (, N, o, n, e, , ), , , (, ', n, e, , y, a, p, ı, y, o, r, s, u, n, , b, a, k, a, l, ı, m, ?, ', , ), ]```

Yalnızca çözüm değil, neden dosyaya farklı davranıldığı konusunda da bilgilenmek istiyorum. Sanırım sqlite3 ile python arasında bir protokol sorunu olabilir. Tablodan alınan verileri sqlite içinde işlerken sorun yok, ama python'a aktarıp işlemeye çalışınca (birkaç for döngüsünde benzer sorun yaşadım) sorun çıkabiliyor. Mu acaba? Haddim olmayarak yorum yapıyorum, özür dilerim. Lütfen yardım!..

#2

readline metodu yerine readlines metodunu deneyin.


#3

denedim, sonuç değişmiyor.


#4
sonuç = [] 
with open("dosya.txt", "r") as file:
    içerik = file. read() 
    sonuç. append(icerik ) 
# bu şekilde ilk satırdaki liste verisi ile aynı sonuç çıkmalı 


#5

Maalesef, ilk sıradaki veriyi alamıyorum.


#6

Böyle sorun çözülür. ne kadar fonksiyonel tartışma konusu ama sonuç verecektir.


sonuc = [] 
with open("d.txt", "r") as file:
    icerik = file.read()
    icerik = icerik.splitlines()
    for i in icerik:
        veri =i.split(", ")
        for item in veri:
            sonuc.append(item ) 

liste = []

for i in sonuc:
    
    i = i.replace("('","")
    i = i.replace("',)","")
    i = i.replace(",)","")
    i = i.replace("(","")
    #i = i.replace(" ","") # burda aktif olunca bazı değerler birleşir
    i = i.replace("None","")
    
    liste.append(i)
    
son = ", ".join(liste)

print(son)

sonuç :

al su iç, susadın mı, , al su bakalım, gene mi susadın sen? Al bakalım su, , al yemek, , ne yapıyorsun bakalım?, al su iç, susadın mı, , al su bakalım, gene mi susadın sen? Al bakalım su, , al yemek, , ne yapıyorsun bakalım?, al su iç, susadın mı, , al su bakalım, gene mi susadın sen? Al bakalım su, , al yemek, , ne yapıyorsun bakalım?


#7

Teşekkürler HKMDMR. Verdiğiniz kodları çalıştırdım ve sonuç bir liste oldu bende.
[al su iç, susadın mı, , al su bakalım, gene mi susadın sen? Al bakalım su, , al yemek, , ne yapıyorsun bakalım?]
Ama sorun değil, bu hali ile de işimi görecek, gerekirse bunu da karakter dizisine çevirmek sorun değil. Vaktinize, emeğinize sağlık.