Split ile kelime ayırma

Herkese Merhaba,

#metin dosyası içerisinde bir cümle olduğunu düşünelim.


class Dosya():
    def __init__(self):
        with open ("metin.txt","r",encoding="utf-8") as file:
   
            dosya_içerik=file.read() #read dosya okuma fonksiyonudur.
            
            
            x=dosya_içerik.split()
            for i in x:
                print(i)
dosya=Dosya()

yukarıda yazdığım kod tam olarak metin dosyası içerisindeki kelimeleri yazıp alt satıra geçiyor.
ancak x değişkenine atama yapmadan

          dosya_içerik.split()
           for i in dosya_içerik:
               print(i)

şeklinde kodu yazdığımda her bir harfi yazıp alt satıra geçiyor.
sebebini anlayamadım yardımcı olur musunuz ?

şimdiden Teşekkürler.

Sizi yanlış anlamamışsam print(i)'yi print(i, end="") olarak değiştirirseniz istediğiniz şekilde düzelmesi gerekiyor.


Bu arada bu kodu silip

Burada read yerine readlines metodu kullanabilirsiniz.
Dosyanın içeriğini liste içinde verir ve siz de spliti bu yüzden kullandınız diye düşünüyorum.

1 Beğeni

dosya_içerik.split(), dosya_içerik üzerinde bir değişim yapmıyor. str’lerin immutable olmasından ve metodun dönüş değerini kullanmanızdan bunu anlayabilirdiniz.

dosya_içerik değişmedi. Değişemez de, çünkü str’ler immutable.


Şöyle yapabilirdiniz:

            for i in dosya_içerik.split():
                print(i)
3 Beğeni

split() kullanımında şöyle bir şey de var;

dosya_içerik.split(‘.’)

şeklinde yazarsan dosya_içerik içindeki veriyi noktalardan ayırır. Eğer her virgülde ayırmak istersen de split(‘,’) şeklinde kullanabilirsin.

Hocam ilginiz için teşekkürler yalnız.

çıktıların farklı olmasını anlayamadım zaten.
yani dosya_içerik i farklı bir değişkene atadığımda (örn : x) metin içerisindekileri kelime olarak ayırırken atama yapmadan döndürdüğümde harf harf ayırıp alt satıra geçiyor.
yani;

değişkene atama yapsamda yapmasamda aynı sonucun olması gerektiğini düşünüyorum.

split() yaptığımızda default olarak split() parantezinin içinde nasıl bir ayar veya değer oluşuyor ordan ilerlersem daha rahat anlarım sanırım.

Attığınız kodda dosya_içerik’i başka bir değişkene atamıyorsunuz. dosya_içerik.split() metodunun dönüş değerini atıyorsunuz.

Zaten değişkene atama yapmanız sonucu değiştirmiyor. for döngüsü ile dosya_içerik yerine dosya_içerik.split() metodundan dönen değer üzerinden geçtiğinizde sonuç değişiyor.

Varsayılan parametrelerden bahsediyorsanız bunun konu ile alakası yok. dosya_içerik.split metodu çağırıldığında dosya_içerik üzerinde bir değişim yapmıyor, bir liste oluşturup onu değer olarak döndürüyor.

>>> dosya_içerik = "asd asd asd"
>>> x = dosya_içerik.split()
>>> x
['asd', 'asd', 'asd']
>>> dosya_içerik
'asd asd asd'
>>> 
1 Beğeni

şimdi çok daha anlaşılır oldu benim için
çok teşekkür ederim.