Str.lower() yanlış çalışıyor - Türkçe I harfini i olarak küçültüyor, halbuki ı olmalı

Merhaba Değerli Arkadaşlar

string.lower() yapmak istiyorum. hepsini düzgün küçültüyor, sadece bir harfte yanlış küçültüyor.

s = ‘aAàâÂbBcCçÇdDeEfFgGğĞhHıIìîÎiİjJkKlLmMnNoOöÖpPrRsSşŞtTuUùûüÜvVwWyYzZ’
print(s)
print(s.lower())

Yukarıdaki kod aşağıdaki çıktıyı veriyor:

aAàâÂbBcCçÇdDeEfFgGğĞhHıIìîÎiİjJkKlLmMnNoOöÖpPrRsSşŞtTuUùûüÜvVwWyYzZ
aaàââbbccççddeeffggğğhhıiìîîii̇jjkkllmmnnooööpprrssşşttuuùûüüvvwwyyzz

Tek bir problem var: I harfini (büyük I) küçültürken, i harfi (küçük i) olarak yanlış küçültüyor. Halbuki. ı harfi (küçük ı) olarak küçültmesi lazım.

İnternette aradım, bulamadım. Python 3 den itibaren string’ler zaten unicode (utf-8 herhalde) olarak tutuluyormuş. Zaten öteki Türkçe karakterleri de doğru olarak küçültüyor.

Aklıma tek gelen çözüm, kendi lower() fonksiyonumu kendim yazmak, bir dict kullanarak.

Acaba basit, kısa bir yolu yok mu? Bir yeri mi kaçırıyorum?

Teşekkürler

Bunun için yazbel dökümantasyonunda bu sorunu nasıl çözebileceğiniz yazıyor.
yine de nasıl yapacağınızı anlatayım.
farzedelim ki kelime ISPARTA

a = "ISPARTA"
a.replace("I","ı").lower()

OUTPUT;
ısparta

Harika bir çözüm. Çok basit ve kısa. Harika. :smiley:
Teşekkür ederim.

1 Beğeni

Rica ederim hocam.
iyi günler dilerim :slight_smile:

https://bugs.python.org/issue1528802

Ben bunun burda olduğunu neden biliyorum?