Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 26, 2007 17:24:17

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

WinXP SP2, ActivePython 2.5.
Как правильно работать с кириллицей функциями строк upper, lower, capitalize, swapcase, title?
“Вася”.upper() для кириллицы не работает.



Офлайн

#2 Апрель 26, 2007 17:31:18

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

Через юникод:

>>> print unicode('Вася', 'utf-8').upper().encode('utf-8')
ВАСЯ
P.S. Кодировку, разумеется, надо заменить на нужную тебе.



Офлайн

#3 Апрель 26, 2007 20:35:33

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

Спасибо, получилось. Работает и без последнего encode, кстати.



Офлайн

#4 Апрель 26, 2007 22:24:15

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

Все ники заняты
Работает и без последнего encode, кстати.
Я знаю, но все же лучше перед выводом их преобразовывать в str с нужной кодировкой.



Офлайн

#5 Апрель 27, 2007 06:29:39

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

slivlen: “все же лучше перед выводом их преобразовывать в str с нужной кодировкой”…
Если вывод может быть и в консоль и в окошки, предпочитаю оставлять строки в виде unicode, python сам прекрасно решает, в какой кодировке вывести строку.



Офлайн

#6 Апрель 27, 2007 11:13:01

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

Striver
slivlen: “все же лучше перед выводом их преобразовывать в str с нужной кодировкой”…
Если вывод может быть и в консоль и в окошки, предпочитаю оставлять строки в виде unicode, python сам прекрасно решает, в какой кодировке вывести строку.
До тех пор пока вы в консольной проге не перенаправите вывод в файл:

python rus.py > file



Офлайн

#7 Апрель 27, 2007 11:50:55

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

кстати из-за этого часто не работает ulipad и другие редакторы, с возможностью запуска скриптов и вывода stdout в своём окне…

Офлайн

#8 Апрель 27, 2007 12:19:42

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Работа с кириллицей, методы строк

slav0nic
кстати из-за этого часто не работает ulipad и другие редакторы, с возможностью запуска скриптов и вывода stdout в своём окне…
хотя решение у этой проблемы достаточно простое: вместо обычного print нужно делать вывод в файловый поток, оборачивающий stdout или stderr, но который имеет установленную правильную кодировку, типа как мы это делаем в bzr:


import codecs
import sys

outf = codecs.getwriter(output_encoding)(sys.stdout, errors='replace')

print >>outf, u'Русский текст'



Отредактировано (Апрель 27, 2007 12:20:00)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version