Eğer girdiğin kelimelerin baş harflerinin tümünü büyük yapmak istiyorsan zaten kullandığın title fonksiyonunu arkada bir işlem yapmadan kullanabilirsin.
Eğer girdiğin kelimelerin baş harflerinin tümünü büyük yapmak istiyorsan zaten kullandığın title fonksiyonunu arkada bir işlem yapmadan kullanabilirsin.
veri = "selam as a i" print(veri.title()) -> Selam As A I
Eğer girdiğin kelimelerin tüm harflerinin büyük olmasını istiyorsan da şu şekilde yapabilirsin
veri = "selam as a i" upper = [x.upper() for x in veri.split()] -> ['SELAM', 'AS', 'A', 'I']
Fakat her iki seneryoda da i I'ya dönüşecek. Bunun sebebi İ'nin Türkçe karakter olması. Bunu nasıl çözeriz, bunun için kendi fonksiyonumuzu yazarız.
def tr_upper(word): word = re.sub(r"i", "İ", word) word = re.sub(r"ı", "I", word) word = re.sub(r"ç", "Ç", word) word = re.sub(r"ş", "Ş", word) word = re.sub(r"ü", "Ü", word) word = re.sub(r"ğ", "Ğ", word)
word = word.upper() # default upper
return word
Şimdi az önceki işlemleri birde bu fonksiyonu kullanarak yapalım.
Girdiğim tüm kelimelerin büyük olmasını istiyorum.
veri = 'selam as a i' print( [tr_upper(x) for x in veri.split()] ) -> ['SELAM', 'AS', 'A', 'İ']
Girdiğim tüm kelimelerin baş harflerinin büyük olmasını istiyorum.
veri = 'selam as a i' print( [tr_upper(x[0]) + x[1:] for x in veri.split()] ) -> ['Selam', 'As', 'A', 'İ']
Eğer girdiğin kelimelerin baş harflerinin tümünü büyük yapmak istiyorsan zaten kullandığın title fonksiyonunu arkada bir işlem yapmadan kullanabilirsin.
veri = "selam as a i" print(veri.title()) -> Selam As A I
Eğer girdiğin kelimelerin tüm harflerinin büyük olmasını istiyorsan da şu şekilde yapabilirsin
veri = "selam as a i" upper = [x.upper() for x in veri.split()] -> ['SELAM', 'AS', 'A', 'I']
Fakat her iki seneryoda da i I'ya dönüşecek. Bunun sebebi İ'nin Türkçe karakter olması. Bunu nasıl çözeriz, bunun için kendi fonksiyonumuzu yazarız.
def tr_upper(word): word = re.sub(r"i", "İ", word) word = re.sub(r"ı", "I", word) word = re.sub(r"ç", "Ç", word) word = re.sub(r"ş", "Ş", word) word = re.sub(r"ü", "Ü", word) word = re.sub(r"ğ", "Ğ", word)
word = word.upper() # default upper
return word
Şimdi az önceki işlemleri birde bu fonksiyonu kullanarak yapalım.
Girdiğim tüm kelimelerin büyük olmasını istiyorum.
veri = 'selam as a i' print( [tr_upper(x) for x in veri.split()] ) -> ['SELAM', 'AS', 'A', 'İ']
Girdiğim tüm kelimelerin baş harflerinin büyük olmasını istiyorum.
veri = 'selam as a i' print( [tr_upper(x[0]) + x[1:] for x in veri.split()] ) -> ['Selam', 'As', 'A', 'İ']
< Bu mesaj bu kişi tarafından değiştirildi Guest-3B332F97F -- 1 Eylül 2022; 11:34:21 >
Döngü içinde s adlı bir değişkene atama yapıyorsun, ama o atama direkt veri'ye yansımaz. veri başka s başka. Burada temel python bilginin çok eksik olduğu ortaya çıkıyor. Diğer soruna gelirsek: python'da stringler için upper() ve lower() fonksiyonları var, ancak bunlar locale ayarlarını dikkate alarak çalışmıyor, bu nedenle 'ı' ve 'İ' harflerinde yanlış sonuç üretiyor. Çözüm aslında çok basit. upper() veya lower() çağırmadan önce bir replace() yapacaksın:
Alfabemize özgü harfler için bahsedilen özel durum çözümlerini ekleyip küçükten büyüğe dönüşüm için 32 çıkarsak, hantal fonksiyon kullanmak yerine? a-A=32 ya...
veri = input("Veri: \t")
for s in veri.split():
if s.startswith("i"):
s = s.replace("i" , "İ" , 1)
print(veri.title())