Dostlar merhaba, elimde 1000 adet ad-soyad içeren (.txt) metin dosyası var. Python ile dosyanın ilk satırındaki ilk kelimeyi nasıl seçebilirim ? Böylelikle ilk kelimede adı seçicek, ad-soyad birlikte almamış olucak.
Merhaba,
Şu şekilde sadece isimleri alabilirsiniz:
def func(file_name):
with open(file_name) as file:
for x in file.readlines():
print(x.strip().split()[0])
func("profiles.txt")
# profiles.txt
ad1 soyad1
ad2 soyad2
ad3 soyad3
ad4 soyad4
f = open('filename', 'x')
content = f.read()
first_word = content.splitlines()[0].split[0]
f.close()
hocam peki çift isimliler de nasıl yapabilirim.
str.split
bütün metin üzerinde işlem yapıyor. Bize sadece ilk satır lazım.
f = open('filename', 'x')
content = f.read()
first_line = content.splitlines()[0]
_ = first_line.split()
name = _.remove(_[-1]).join(' ')
f.close()
Ayni sekilde.
Bir dosyanin ilk satirindaki ilk kelime, dosyanin icindeki isimlerin ciftliginden bagimsiz.
hocam filename yerine dosyanın ismini yazıyorum isimlererkek.txt diye aynı dizinde olmasına rağmen dosya bulunamadı hatası veriyor neden acaba ?
Bilmiyorum, hic veri yok.
Bu arada write (w) kipini kullanirsan dosyadaki veriler silinir, ustune yazilir. Kullanirken append (a) olarak degistir.
Çift isimli derken, sanırım Mehmet ali Xoğlu
gibi ikinci ismi olan insanlardan bahsediyorsunuz. Bunun için listenin ilk 2 elemanını almalısınız. Kodları şöyle değiştirin:
def func(file_name):
with open(file_name) as file: #dosyayı okuma modunda açıyoruz.
# readlines() dosya içerisindeki satırlardan
# oluşan bir liste döndürüyor.
for x in file.readlines():
# Her satırdaki \n kaçış dizilerini yok etmek için
# strip() metodunu kullanıyoruz.
# ardından string tipindeki satırı boşluklardan bölüyoruz
# elimize 3 elemanlı bir liste geçiyor
# bu listenin ilk 2 elemanını alıyoruz.
print(x.strip().split()[:2])
func("profiles.txt")
# profiles.txt
ad1 ad2 soyad1
ad2 ad2 soyad2
ad3 ad2 soyad3
ad4 ad2 soyad4
ad5 ad2 soyad5
Ben son kelime haric hepsini almistim. 3 isim olur ama 2 soyisim olmaz.
Evet, varmış. Gerçekten yeni öğrendim
TabError: inconsistent use of tabs and spaces in indentation hatası alıyorum
print(x.strip().split()[:2]) bu satır için
hocam cevap olarak yazılan kodların hepsinde hata veriyor neden acaba ?
Tüm satırları sola doğru sıfır olacak şekilde kaydırın. Ardından tekrar girintileri ekleyin.
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: ‘charmap’ codec can’t decode byte 0x9e in position 132: character maps to
şuan da böyle hata verdi
Şu kısmı şununla değiştirin:
open(file_name, encoding="utf-8")
Sonuç alamazsanız, text dosyasını paylaşın bizimle. Daha fazla yardımcı olabiliriz.
def func(file_name):
with open(file_name, encoding="utf-8") as file:
for x in file.readlines():
print(x.strip().split()[0])
func("isimlererkek.txt")
bu kod bütün adları listeliyor ben ilk satırdaki adı istiyorum nasıl yapabilirim hocam ?
def func(file_name, satir_no):
with open(file_name, encoding="utf-8") as file:
return file.readlines()[satir_no].split()[:2]
print(func("profiles.txt", 0))
Temel dosya işlemlerini öğrenirsiniz, problem yok. Ancak neticede o dosya içerisinde veri var. O verinin türü nedir, nasıl manipüle edebilirsiniz, bunu bilmezseniz dosyalar pek de işinize yaramaz. Dosya işlemlerini öğrenmeden önce veri tiplerini/yapılarını öğrenmelisiniz. Şuradan ilerleyebilirsiniz. Fonksiyonlar konusuna kadar, veri tipleri anlatılıyor. Fonksiyonlara varmadan önce de temel dosya işlemlerini göreceksiniz, ki bu zaten aradığınız şey.
İyi çalışmalar.