Sözlükleri kullanarak bir telefon defteri uygulaması yapmam gerekiyor. Önce oluşturduğum tel.txt dosyasındaki bilgileri sözlüğe aktarmam lazım. Geri kalan işlemleri sözlük üzerinden yapmalıyım. Ama sözlüğe nasıl aktaracağım ??
Merhaba,
İzleyebileceğiniz yöntemlerden birisi txt
dosyası yerine json
dosyası kullanmanız. Uzun olan ikinci yol ise, txt
dosyasını okuma modunda açıp, okunan verileri sözlükte yer almalarını istediğiniz veri tiplerine dönüştürmek. Bu dönüştürme işlemini yapabilmek için muhtemelen okunan veriyi temizlemeniz, string parçalama vb. işlemleri yapmanız gerekiyor. txt
dosyasındaki yazıları görmediğimiz için spesifik olarak şunları şunları yapmalısınız gibi bir şey söyleyemiyorum.
Bunu bizim size sormamız lazım, dosyanın formatını ve nasıl bir sözlüğe dönüştürmek istediğinizi bilmiyoruz:
tel.txt dosyasının içinde 2 tane ad ,soyad ,tel no var sadece . Bunları sözlüğe aldıktan sonra eklemeleri sözlüğe yapacağım
Tamam da bir örnek gösterseniz iyi olur.
tel.txt dosyasının içi:
ayşe macit : 5001023435
necmi eroğlu : 5067891234
bunları işte normal sözlüğe atmam gerek, daha sonra sözlüğe ekleme yapacağım.
Konu dışı
Yazılım yazalım güzel bir tabir olmuş
Teşekkürler
Biraz geç cevap veriyorum kusura bakmayın.
Aşağıdaki kodları iyice bir inceleyin isterseniz. Anlamadığınız yer olursa çekinmeden soru sorabilirsiniz.
# Kayıtları tuttuğunuz text dosyasını okuma
# modunda açalım.
with open("test.txt", encoding="utf-8") as f:
# Dosyadaki verileri satır satır alalım.
# Şöyle bir veri almamız lazım.
# ['ayşe macit : 5001023435\n', 'necmi eroğlu : 5067891234\n']
data = f.readlines()
# \n kaçış dizisini silelim. Ve satırdaki veriyi " : "
# karakterlerinden ayıralım. Sonra da isim ve soy ismi ayıralım.
data = [
i[0].split(" ") + [i[1]]
for i in [i.strip().split(" : ") for i in data]
]
# Şöyle bir veri elde etmemiz lazım.
# [['ayşe', 'macit', '5001023435'], ['necmi', 'eroğlu', '5067891234']]
# Şimdi bu veriden nasıl bir sözlük oluşturmak istiyorsunuz
# bundan sonrası size kalmış, şöyle bir şey yapılabilir mesela:
sozluk = {
i: {
"Ad": j[0],
"Soyad": j[1],
"Telefon": j[2]
} for i, j in enumerate(data)
}
print(sozluk[0]["Ad"], sozluk[0]["Soyad"], sozluk[0]["Telefon"])
# Bu sözlüğü bir json dosyasına kaydedebilirsiniz.
# Json dosyası okunduğunda, okunan şey bir sözlük olacaktır.
# Eğer liste yazdırırsanız, bu sefer liste okunacaktır. Ama her halükarda
# Python'ın primitif veri tipleri karşınıza çıkacak.
from json import dump, load
with open("test.json", "w", encoding="utf-8") as f:
dump(sozluk, f, ensure_ascii=False, indent=4)
# Dosyayı okumak istediğinizde json kütüphanesinin load fonksiyonunu
# kullanabilirsiniz.
with open("test.json", encoding="utf-8") as f:
data = load(f)
print(data["0"]["Ad"])
# Json dosyasının anahtarlarının string olması gerekir.
# Bu yüzden data[0] yerine data["0"] yazmamız gerekiyor.
Çok teşekkür ederim , bir şey sormak istiyorum.
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xfd in position 27: invalid start byte
şöyle bir hata alıyorum , düzeltemedim. Ne yapmalıyım ?
bu hata bende djangoyla alakalıydı 0xfd
sanıyorumki özel bir karakter bundan dolayı hata verdi bu konuyla alakalı ise burdan devam edelim değilse yeni konu açın oradan devam edelim
benim araştırmalarıma göre 0xfd= ý
ve de bir yerin 28. karakteri ama neyin