Python and Turkish capitalization
You should use PyICU
>>> from icu import UnicodeString, Locale
>>> tr = Locale("TR")
>>> s = UnicodeString("i")
>>> print(unicode(s.toUpper(tr)))
İ
>>> s = UnicodeString("I")
>>> print(unicode(s.toLower(tr)))
ı
>>>
You can define your own hardcoded function for Turkish character problem.
import re
def tr_upper(self):
self = re.sub(r"i", "İ", self)
self = re.sub(r"ı", "I", self)
self = re.sub(r"ç", "Ç", self)
self = re.sub(r"ş", "Ş", self)
self = re.sub(r"ü", "Ü", self)
self = re.sub(r"ğ", "Ğ", self)
self = self.upper() # for the rest use default upper
return self
def tr_lower(self):
self = re.sub(r"İ", "i", self)
self = re.sub(r"I", "ı", self)
self = re.sub(r"Ç", "ç", self)
self = re.sub(r"Ş", "ş", self)
self = re.sub(r"Ü", "ü", self)
self = re.sub(r"Ğ", "ğ", self)
self = self.lower() # for the rest use default lower
return self
regular upper:
>>>print("ulvido".upper())
ULVIDO
our custom upper:
>>>print(tr_upper("ulvido"))
ULVİDO
if you need this conversion a lot you can make it .py file. for example: save it as trtextstyle.py and import into your projects.
if trtextstyle.py is same directory with your file:
from .trtextstyle import tr_upper, tr_lower
hope this helps.