ayy*_*mbo 7 python unicode encoding utf-8
使用python 2.7:
>myCity = 'Isparta'
>myCity.lower()
>'isparta'
#-should be-
>'?sparta'
Run Code Online (Sandbox Code Playgroud)
尝试了一些解码,(比如,myCity.decode("utf-8").lower())但是找不到怎么做.
怎么能降低这种字母?('我''''','İ'>'我'等)
编辑:在土耳其语中,'我'的小写是'ı'.'i'的大写是'İ'
有些人建议使用tr_TR.utf8语言环境.至少在Ubuntu上,可能与此bug有关,设置此语言环境不会产生所需的结果:
import locale
locale.setlocale(locale.LC_ALL, 'tr_TR.utf8')
myCity = u'Isparta ?sparta'
print(myCity.lower())
# isparta isparta
Run Code Online (Sandbox Code Playgroud)
因此,如果此错误影响您,作为一种解决方法,您可以自己执行此转换:
lower_map = {
ord(u'I'): u'?',
ord(u'?'): u'i',
}
myCity = u'Isparta ?sparta'
lowerCity = myCity.translate(lower_map)
print(lowerCity)
# ?sparta isparta
Run Code Online (Sandbox Code Playgroud)
版画
?sparta isparta
Run Code Online (Sandbox Code Playgroud)
您应该使用来自emre 解决方案的unicode 的新派生类
class unicode_tr(unicode):
CHARMAP = {
"to_upper": {
u"?": u"I",
u"i": u"?",
},
"to_lower": {
u"I": u"?",
u"?": u"i",
}
}
def lower(self):
for key, value in self.CHARMAP.get("to_lower").items():
self = self.replace(key, value)
return self.lower()
def upper(self):
for key, value in self.CHARMAP.get("to_upper").items():
self = self.replace(key, value)
return self.upper()
if __name__ == '__main__':
print unicode_tr("kitap").upper()
print unicode_tr("K?TAP").lower()
Run Code Online (Sandbox Code Playgroud)
给
K?TAP
kitap
Run Code Online (Sandbox Code Playgroud)
这必须解决您的问题。
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |