Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 5, 2014 20:24:14

ohmyheap
Зарегистрирован: 2014-04-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

Как при raise RuntimeError(“Неизвестное содержимое”) в Python 2.7.6 добиться корректного вывода кирилицы в консоль, если следующие варианты не работают:
1) raise RuntimeError(u“Неизвестное содержимое”)
2) raise RuntimeError(unicode(“Неизвестное содержимое”))
3) errorMsg = u“Неизвестное содержимое”
raise RuntimeError(errorMsg)
4) errorMsg = u“Неизвестное содержимое”
raise RuntimeError(unicode(errorMsg))
Что еще попробовать?

Офлайн

#2 Апрель 5, 2014 21:19:45

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

:) вообще советую переходить на Lunix. В винде небольшая путаница с кодировками
пробуйте

u“Неизвестное содержимое” .encode("cp866")

В консоли используется кодировка 866 но если вы например выход перенаправите в файл то по умолчанию виндовые средства будут пытаться интерпретировать содержимое в cp1251. А для кодов на питоне и питонячи средства “любят” utf-8. Над всем этим еще надругается локаль вашего компьютера.



Отредактировано doza_and (Апрель 5, 2014 21:21:39)

Офлайн

#3 Апрель 6, 2014 07:03:37

ohmyheap
Зарегистрирован: 2014-04-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

#!/usr/bin/env python
# -*- coding: utf-8 -*-
f = open("test.txt")
line = f.readline()
while line:
    print line,
    line = f.readline()
f.close
Я, конечно, понимаю, что пример можно переписать в виде
#!/usr/bin/env python
# -*- coding: utf-8 -*-
for line in open("test.txt"):
    print line,
и я попробовал по разному и encode(“cp866”) и преобразовывать в юникод. Успеха не добился.
Подскажите еще и на данном примере. Спасибо. (и будет + в репу)

p.s. я бы и рад сбежать на линь, но скрипты под виндузового пользователя требуются.

Отредактировано ohmyheap (Апрель 6, 2014 07:06:52)

Офлайн

#4 Апрель 6, 2014 07:36:10

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

# coding: utf-8
# 1.txt - текстовый документ в кодировке cp1251
for i in open('1.txt'):
    # следующая команда напечатает иероглифы
    print i
    # следующая команда напечатает все корректно
    print i.decode('cp1251')
# все корректно
print u'ильнур'
# все корректно
raise RuntimeError(u'Неизвестное содержимое'.encode('cp866'))

Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\ilnurgi>cd c:\
c:\>python test1.py
яЁштхЄ
привет
ьшЁ
мир
ильнур
Traceback (most recent call last):
  File "test1.py", line 16, in <module>
    raise RuntimeError(u'╨Э╨╡╨╕╨╖╨▓╨╡╤Б╤В╨╜╨╛╨╡ ╤Б╨╛╨┤╨╡╤А╨╢╨╕╨╝╨╛╨╡'.encode('cp
866'))
RuntimeError: Неизвестное содержимое
c:\>

Отредактировано ilnur (Апрель 6, 2014 07:37:49)

Офлайн

#5 Апрель 6, 2014 10:55:07

ohmyheap
Зарегистрирован: 2014-04-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

Спасиб, ребят. Всем дал + в репу.

Офлайн

#6 Апрель 6, 2014 11:22:49

Singularitty
От:
Зарегистрирован: 2012-02-02
Сообщения: 61
Репутация: +  5  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

Офлайн

#7 Апрель 6, 2014 12:13:52

ohmyheap
Зарегистрирован: 2014-04-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

Singularitty
а ты дерзкий
а ты шутник местный?

Офлайн

#8 Апрель 6, 2014 12:15:59

Singularitty
От:
Зарегистрирован: 2012-02-02
Сообщения: 61
Репутация: +  5  -
Профиль   Отправить e-mail  

Офлайн

#9 Апрель 6, 2014 12:42:28

ohmyheap
Зарегистрирован: 2014-04-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

Singularitty
ohmyheapога
рад за тебя
p.s. давайте не будем разводить флуд в теме.

Отредактировано ohmyheap (Апрель 6, 2014 18:22:10)

Офлайн

#10 Апрель 6, 2014 18:17:38

ohmyheap
Зарегистрирован: 2014-04-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по Python 2.7.6

Мб кто подскажет, как правильно крутить

raw_input("Введите строку: ")
чтобы не лезли кракозябры.
Про конструкцию
import sys
sys.stdout.write("Введите строку: ")
sys.stdin.readline()
знаю, хотелось уточнить именно про raw_input(), т.к. как не извращался с encode() и decode() что т не получилось да и примеры с гугла не очень то помогают

Отредактировано ohmyheap (Апрель 6, 2014 18:22:18)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version