Преобразование строки Unicode/UTF-8 в нижний/верхний регистр с использованием библиотеки pure & pythonic

Я использую Google App Engine и не могу использовать какое-либо расширение C/C++, только чистую и питоническую библиотеку для преобразования строк Unicode/UTF-8 в нижний/верхний регистр. str.lower() и string.lowercase() этого не делают.


person Viet    schedule 27.01.2010    source источник


Ответы (1)


str в кодировке UTF-8 и unicode — это два разных типа. Не используйте string, используйте соответствующий метод для объекта Unicode:

>>> print u'ĉ'.upper()
Ĉ

Расшифруйте str в unicode перед использованием:

>>> print 'ĉ'.decode('utf-8').upper()
Ĉ
person Ignacio Vazquez-Abrams    schedule 27.01.2010
comment
Спасибо. Это применимо к вьетнамцам? - person Viet; 27.01.2010
comment
Так должно быть. В интерактивном интерпретаторе проверить не сложно. - person Ignacio Vazquez-Abrams; 27.01.2010
comment
Мой код не работает для русского и вьетнамского языков. Я не знаю других языков oladic.appspot.com/add/ОИЧУНКАЛС oladic.appspot.com/add/TÌNH%20YÊU oladic.appspot.com/add/ĉĉĉĉ - person Viet; 27.01.2010
comment
Наконец это сработало! Большое спасибо! Хотел бы я больше голосовать! - person Viet; 27.01.2010
comment
Viet: вы, вероятно, захотите URL-кодировать символы Юникода, если вы помещаете их в URL-адрес (хотя, вероятно, проще просто отправить их как utf-8, если вы используете форму для их отправки). - person Wooble; 27.01.2010