Python не понимает русский

Содержание
  1. Python + кириллица?
  2. Войдите, чтобы написать ответ
  3. Почему Джанго не подгружает картинку в CSS и браузер выдает ошибку 404?
  4. VS + Python + кириллица, ошибка в консоли, как решить?
  5. Как заставить выводить русский текст Python?
  6. Python не понимает русский
  7. Что нас ждет в Portal for ArcGIS 10.3
  8. Решение проблемы с .NET при установке ArcGIS на Windows 8.1 (Windows 10)
  9. Также может быть интересно
  10. Новый бесплатный онлайн-курс MOOC «GIS for Climate Action», 25 октября – 6 декабря 2023
  11. Новые инструменты Deep Learning в ArcGIS 3.1
  12. 10 самых интересных новшеств в ArcGIS Pro 3.1
  13. Солнечная энергетика. Возможности ГИС
  14. Доступные геоданные на Узбекистан
  15. Тезисы докладов по гидрогеологической тематике с применением ArcGIS
  16. Эффекты веб-картографии
  17. Москва и окрестности начала 1930-х
  18. Форумы GIS-Lab.info
  19. Re: Python и русские буквы
  20. Re: Python и русские буквы
  21. Re: Python и русские буквы
  22. Re: Python и русские буквы
  23. Re: Python и русские буквы
  24. Re: Python и русские буквы
  25. Re: Python и русские буквы
  26. Re: Python и русские буквы
  27. Re: Python и русские буквы

Python + кириллица?

Ситуация: есть консольное приложение на Python (версия 2.7). В ходе работы приложение должно выводить (считывать не нужно, уж не знаю, важно ли это) данные в консоль, в том числе текст на русском языке. Проблема

def __str__(self): return "%s |(%s)|" % (self.name, self.id)

вот self.name — строка, в которой могут быть русские символы.

Без каких либо преобразований вообще — вылетает ошибка:

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-4: ordinal not in range(128)

def __str__(self): return "%s |(%s)|" % (repr(self.name.encode("UTF-8")), self.id)

то исключение не вылетает, но на консоль выводятся не кириллические символы, а их байтовая репрезентация.

Читайте также:  Замена первого символа php

‘\xd0\x95\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb0 S.’ |(157927927)|

Как решать такую проблему? С латиницей проблем нет, тот же код выводит не байтовую репрезентацию, а нормальные латинские символы символы.

Что кстати можно почитать по этому поводу?

#!/usr/bin/env python # -*- coding: utf-8 -*- class Foo(object): def __init__(self, name): self.name = name def __str__(self): return 'str: %s' % self.name def __unicode__(self): return 'uni: %s' % self.name.decode('utf-8') def __repr__(self): return 'repr: %s' % self.name a = 'Елена S' b = Foo(a) print(str(b)) print(unicode(b)) print(repr(b)) 

Вы правы, такой код действительно работает, вот только я забыл уточнить, что информация и приходит в «байтовой репрезентации» от источника (twitter json).

Дорогой автор !
я долго размышлял в чём дело!
пока не прочел вашу статью
versin python 2
-*- coding: utf-8 -*-
слово=»слова»
print ‘слово’
увы он не поддерживал модулей поддержки языков !

а проблема моя была в том что работая с программой eclipse mars все слова выводимые программой он судорожно показывал обнародовал как ошибка и выдавал № код ячейки памяти в котором хранился этот непонятный интерпритатору обьект .
помогло вот что!
sudo apt-get install python 3
и естественно смена компилятора python 2 на более позднюю версию !

@python_2_unicode_compatible class AuthorModel(models.Model):

Войдите, чтобы написать ответ

Почему Джанго не подгружает картинку в CSS и браузер выдает ошибку 404?

Источник

VS + Python + кириллица, ошибка в консоли, как решить?

Всем привет!
Ради интереса поставил Python 3.5.1 -(решил посмотреть что это за язык, много слышал про него)
Так вот, когда выводишь программу в консоли у меня возникает ошибка, как я понял из-за русского языка и из-за кодировки. Когда пишешь на инглише все норм — конечно можно писать все на нем! и забить на проблему. Но, все-таки мы же русские ) и хочется сообщения писать на своем родном языке.
Погуглил данную тему, у многих людей на многих языках программирования возникает проблема именно из-за русских букв, все решают данную проблему по разному.

ccfa8746d7a742d1bf77066a09875e07.jpg

Господа! вопрос как решить мою проблему ?
Спасибо.

Что удалось нарыть.
А.
если поставить в начале кода такую конструкцию:
# -*- coding: cp1251 -*-
То начинает все работать, как я понял это принудительное перекодирование файла — (буду благодарен если точнее объясните господа)

Б.
(как я понял)
Файл нужно создавать в нужной кодировке utf8
По умолчанию Visual Studio создает файлы в другой кодировки, надо понять где это поменять / проверить / потестить.

Да, все верно! в Visual Studio идем Файл — Дополнительные параметры сохранения
и ставим так(скрин) все начинает работать..
358d87fdaff645d1b289cdadb3266239.jpg8bf2e7537e0e4572aedcc5395f625dd5.jpg

67110686d7914ba5ac982a8e4d684502.jpg

Но это не спасает от такой записи. (скрин) вопрос остается что делать ?

34d1f4ac38fd47888e93d3d57f4cd19f.jpg

Ради теста, напрямую запустил консоль python — а ввел там нужную команду все норм отобразилось!
Да что не так с этой чертовой VS ?

Источник

Как заставить выводить русский текст Python?

Что нужно сделать что-бы в консоль выводилась кириллица?

Для англ. алфавита — работает, а для русского — нет.

__author__ = 'getlucky' # -*- coding: utf-8 -*- def cesarMethod(message): output = [] alphabet = 'abcdefghijklmnopqrstuvwxyz'#'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' steps = int(raw_input('Введите Ваш ключ: ')) for i in message: if i == ' ': output.append(' ') else: pos = alphabet.index(i) + steps if pos >= 25: pos -= 26 output.append(alphabet[pos].decode('utf8')) print 'Зашифрованное сообщение: ', ''.join(output) message = raw_input('Введите Ваше сообщение: ').lower() cesarMethod(message)

Оценить 2 комментария

winordie

winordie

# -*- coding: utf-8 -*- message = 'ывпавыапавыпвпав' for i in message: print(i)
message = u'ывпавыапавыпвпав' for i in message: print(i)

разница всего в одном символе

# -*- coding: utf-8 -*- def cesarMethod(message): output = [] # alphabet = 'abcdefghijklmnopqrstuvwxyz'#'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' alphabet = u'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' # steps = int(raw_input('Введите Ваш ключ: ')) steps = 2 for i in message.decode('utf8'): if i == ' ': output.append(' ') else: pos = alphabet.index(i) + steps if pos >= 25: pos -= 26 output.append(alphabet[pos]) print 'Зашифрованное сообщение: ', ''.join(output) # message = raw_input('Введите Ваше сообщение: ').lower() message = 'специальнодлятостера' cesarMethod(message)

Источник

Python не понимает русский

Что нас ждет в Portal for ArcGIS 10.3

Решение проблемы с .NET при установке ArcGIS на Windows 8.1 (Windows 10)

Также может быть интересно

Новый бесплатный онлайн-курс MOOC «GIS for Climate Action», 25 октября – 6 декабря 2023

Новые инструменты Deep Learning в ArcGIS 3.1

10 самых интересных новшеств в ArcGIS Pro 3.1

Солнечная энергетика. Возможности ГИС

  • ArcGIS
  • ArcGIS Enterprise | Server
  • ArcGIS Online
  • ArcGIS Pro | ArcMap
  • ГИС для бизнеса
  • Данные в ArcGIS
  • Дистанционное зондирование Земли (ДЗЗ)
  • Картография и дизайн
  • Образование и наука
  • Приложения
  • Сельское хозяйство
  • Техподдержка

Доступные геоданные на Узбекистан

Тезисы докладов по гидрогеологической тематике с применением ArcGIS

Эффекты веб-картографии

Москва и окрестности начала 1930-х

Рубрики
  • ArcGIS (174)
  • ArcGIS Enterprise | Server (173)
  • ArcGIS Online (157)
  • ArcGIS Pro | ArcMap (180)
  • Геология (14)
  • ГИС для бизнеса (44)
  • Данные в ArcGIS (101)
  • Дистанционное зондирование Земли (ДЗЗ) (50)
  • Инженерные коммуникации (28)
  • Картография и дизайн (77)
  • Образование и наука (85)
  • Приложения (153)
  • Разработка (56)
  • Сельское хозяйство (6)
  • События (50)
  • Техподдержка (77)

Источник

Форумы GIS-Lab.info

Добрый день!
Начал тут недавно изучать Python. Решил сделать список папок в каталоге, чтобы пристегнуть к аркгисовскому Моделбилдеру, но че-то не соображу, как научить его понимать русские буквы. Получается типа [‘N:\\\xce\xf2\xe4\xe5\xeb\xfb\\\ . и т.п.

Кто в курсе, подскажите что делать.
Заранее спасибо.

Сообщения: 2627 Зарегистрирован: 29 мар 2007, 14:12 Статьи: 31 Проекты: 4/1

Re: Python и русские буквы

Сообщение Voltron » 23 янв 2012, 15:47

Типичная проблема . Используйте UTF-8 для исходников, т.е. код редактируйте в редакторе, который умеет UTF-8, а в самое начало файла добавьте строку

Сообщения: 588 Зарегистрирован: 30 мар 2009, 21:53 Статьи: 4 Проекты: 3

Re: Python и русские буквы

Сообщение yellow-sky » 23 янв 2012, 19:14

Мне кажется у товарища все таки проблема не с текстом исходника а с выводом значений.
Попробуйте: unicode_var.encode(‘utf-8’)
или, если вы в консоли windows: unicode_var.encode(‘cp1251’)

Сообщения: 2627 Зарегистрирован: 29 мар 2007, 14:12 Статьи: 31 Проекты: 4/1

Re: Python и русские буквы

Сообщение Voltron » 23 янв 2012, 20:41

yellow-sky писал(а): Мне кажется у товарища все таки проблема не с текстом исходника а с выводом значений.

Re: Python и русские буквы

Сообщение Serp » 24 янв 2012, 04:42

В исходниках у меня все ок. Проблема получается при выводе:
import os, glob
L = []
for root, dirs, files in os.walk(‘N:\Фондовые материалы’):
L.append(root)

Спасибо за ответ. Пойду смотреть Unicode HOWTO.
А еще у меня по ходу дела вопрос: как в этом os.walk обозначить, чтобы прога заходила только в каждый 1-й вложенный каталог, а не во все подряд (2, 3 уровня и т.п.)?

Re: Python и русские буквы

Сообщение Serp » 24 янв 2012, 12:10

Работаю в консоли под windows. У меня Питон 2,5 установленный за счет АркГИС-931.
Прочитал Unicode HOWTO. Там много написано про файлы, а вот про каталоги нашел только про строки ‘.’ или u’.’
Проверил >>> sys.getfilesystemencoding() — ‘mbcs’
Вижу, что прога работает: получается или
print os.listdir(‘D:\Test data’)
[‘Test’, ‘\xd2\xe5\xf1\xf2’] – пишет по-старому
или print os.listdir(u’D:\Test data’)
[u’Test’, u’\u0422\u0435\u0441\u0442′] – т.е. реакция есть, но русских букв нет.
А если сразу пишешь путь с русскими буквами, >>> print os.listdir(u’D:\Test data\Тест’)
то .. WindowsError: [Error 3] : u’D:\\Test data\\\xd2\xe5\xf1\xf2\\*.*’
А вот куда бы приспособить unicode_var.encode(‘cp1251’) так, к своему стыду, и не нашел.

Сообщения: 2627 Зарегистрирован: 29 мар 2007, 14:12 Статьи: 31 Проекты: 4/1

Re: Python и русские буквы

Сообщение Voltron » 24 янв 2012, 12:32

Serp писал(а): А вот куда бы приспособить unicode_var.encode(‘cp1251’) так, к своему стыду, и не нашел.

dir = u'D:\Test data\Тест' print dir.encode('cp866') 

Сообщения: 588 Зарегистрирован: 30 мар 2009, 21:53 Статьи: 4 Проекты: 3

Re: Python и русские буквы

Сообщение yellow-sky » 24 янв 2012, 15:39

Serp писал(а): А вот куда бы приспособить unicode_var.encode(‘cp1251’) так, к своему стыду, и не нашел.

dir = u'D:\Test data\Тест' print dir.encode('cp866') 

Re: Python и русские буквы

Сообщение Serp » 25 янв 2012, 13:10

Я на консоли пишу для обучения — так быстрее результат получается. Сделал скрипты (правда с выводом опять же в консоль) — тоже самое. Вобщем, я понял, что вы, как и все порядочные люди, просто используете только английские символы. У нас раньше тоже так было, но со временем обросли и русскими, т.к. виндовоз позволяет. Скрипт на VBA под Экселем собирает список каталогов по-русски за пару секунд, а тут получилась заморочка.
Кстати, в скрипте cp1251 нормально задалось в 1-й строке (# -*- и т.д.).
Файлы читает и путь понимает, если ему напрямую задать путь:
>>> reader = csv.reader(open(«D:\Test data\Тест\Текст.csv», «rb»))
>>> for row in reader:
print row
[‘a’, ‘b’, ‘c’]
[‘\xe0’, ‘\xe1’, ‘\xe2’] — здесь а,б,в. Т.е. все работает, но мне-то надо именно собрать список папок в каталоге.
Попробовал конвертнуть это \xe0′ в нормальные буквы, чтобы дальше передать, но в файле cp1251.py указаны такие соответствия с юникодом:
u’\u0441′ # 0xF1 -> CYRILLIC SMALL LETTER ES
u’\u0442′ # 0xF2 -> CYRILLIC SMALL LETTER TE
Вот между ними-то он и пляшет — вместо ‘Тест’ печатает:
или [‘\xd2\xe5\xf1\xf2′] или [u’\u0422\u0435\u0441\u0442’] — на выбор .

Ладно, надо еще хэлп почитать, может где что и попадется. Кто заглянет сюда даже через месяц — не стесняйтесь, пишите )
Ну и на счет 2-го вопроса тоже: как в этом os.walk обозначить, чтобы прога заходила только в каждый 1-й вложенный каталог, а не во все подряд (2, 3 уровня и т.п.)? (а то у ней времени не хватит)
Спасибо за помощь.

Сообщения: 2627 Зарегистрирован: 29 мар 2007, 14:12 Статьи: 31 Проекты: 4/1

Re: Python и русские буквы

Сообщение Voltron » 25 янв 2012, 13:48

Serp писал(а): Вобщем, я понял, что вы, как и все порядочные люди, просто используете только английские символы.

И это тоже. Но главная причина в другом, мы пользуемся правильными ОС, где нет такого бардака с кодировками .

Serp писал(а): Я на консоли пишу для обучения — так быстрее результат получается. Сделал скрипты (правда с выводом опять же в консоль) — тоже самое.

Выше же написано. Объекты unicode перед выводом в консоль надо конвертировать в соответствующую кодировку, в данном случае CP866. Вот пример

# -*- coding: utf-8 -*- import os for root, dirs, files in os.walk( u"D:/Books/" ): print "Looking in ", root.encode( "cp866" ) print "\tsubdirectories:" for d in dirs: print "\t",d.encode( "cp866" ) print "\tfiles:" for f in files: print "\t",f.encode( "cp866" ) print "\n" 
Looking in D:\Books\Ф_Брукc_мл subdirectories: files: Мифический_человекомесяц.rtf Looking in D:\Books\О_Уайльд subdirectories: Пьесы Сказки files: Портрет_Дориана_Грея.rtf Looking in D:\Books\О_Уайльд\Пьесы subdirectories: files: Веер_леди_Уиндермир.rtf Женщина, не стоящая внимания.rtf Идеальный муж.rtf . 

Serp писал(а): Ну и на счет 2-го вопроса тоже: как в этом os.walk обозначить, чтобы прога заходила только в каждый 1-й вложенный каталог, а не во все подряд (2, 3 уровня и т.п.)? (а то у ней времени не хватит)

Источник

Оцените статью