Как вывести русский текст в python
Перейти к содержимому

Как вывести русский текст в python

  • автор:

Как вывести в консоль русские символы c выполняемой программы на python?

Чтобы напечатать произвольный текст, используйте unicode тип:

print(u'\u0439') 
#XXX DO NOT DO IT print [u'\u0439'.encode('utf-8')] # a bytestring in a list # -> ['\xd0\xb9'] 

print(list_) в Питоне печатает элементы списка, вызывая repr() функцию для каждого отдельного элемента, аналог: print(«[%s]» % «, «.join(map(repr, list_))) . Подобное текстовое представление хорошо для отладки: оно призвано быть однозначным (во многих случаях eval(repr(obj)) == obj ). См. Чем отличается __repr__ от __str__ ? Чтобы избежать вызова repr() , форматируйте вашу коллекцию вручную.

Чтобы получить человекочитаемый текст, декодируйте байты в том месте где вы их получаете (на границе с внешним миром), где у вас больше информации об их кодировке и передавайте текст внутри программы как unicode тип. Кодируйте текст обратно в байты, используя подходящее представление, только когда необходимо отдать данные (записать на диск, отправить по сети). Это так называемая концепция Unicode sandwich: «decode early, encode late, use Unicode inside».

Обратите внимание, что хотя попытка напечатать байты напрямую может иногда работать, но это может сломаться как только окружение изменится. К примеру, если вы напечатаете байты, которые представляют текст, закодированный в cp1251 кодировке, в окружении ожидающем cp866 кодировку, то вы можете получить кракозябы. Используйте Юникод для работы с текстом в Питоне. Более строгое отношение к смешиванию Unicode текста и байт—это одно из ключевых отличий Python 3 по сравнению с Python 2.

Бывают исключения, когда вашей программе приходится много работать с путями на *nix системе в Питоне 2, тогда удобно рассматривать пути как непрозрачные куки и получать/передавать их обратно системе как есть в виде байт. См. Как работать с путями c русскими символами?

$ PYTHONIOENCODING=utf-8 python -c 'print(u"\u0439")' > output.txt 

На Windows, может быть полезен win-unicode-console пакет. См. Как из Python вывести на Windows-консоль строку в Юникоде?

Если вы хотите печатать в тексте самой Питон-программы русские буквы, тогда на Python 2, необходимо явно декларировать используемую кодировку наверху .py файла; и чтобы не приходилось использовать u» префикс для создания строк из констант ( » ) в тексте программы, можно включить unicode_literals :

#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import unicode_literals print('Здравствуй, мир!') 

Обе опции можно опустить на Питоне 3 (по умолчанию всё работает).

Обратите внимание, что coding: utf-8 (кодировка исходного кода) не имеет никакого отношения к кодировке ввода/вывода—это независимые вещи.

Как вывести русский текст в python

«Как выводить русские буквы в Python?»

Вариант для распечатки Архивированная нить — только для чтения!
Пред. тема | След. тема
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

Столкнулся я со следующей проблемой при работе с Python:
интерпретатор не хочет работать с русским текстом. Например, если мне нужно напечатать «привет», то команда

print («привет»)

не проходит! Компилятор ругается на то, что символы должны быть только ASCII.
Я нашел только один единственый способ решения этой проблемы, но он очень неудобный при написании программ: сперва объявляю строковую переменную, в которой текст пишу в Юникод, а затем вывожу эту переменную с помощью print, применив к переменной метод encode(«koi8-r»)

Это работает, но вводить текст по однй буковке в кодировке Юникод очень утомительно.

Можно еще каким-либо способом работать с русским текстом?

P.S: если эта конференция немного не по теме, то дайте пожалуйста ссылку на какую-нить конференцию, где мне смогут ответить на этот вопрос.

Оглавление

Сообщения по теме

Вероятно локаль не настроена.
Так что man locale

Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.

Как заставить Python выводить на экран русский текст с помощью функции print? Пишу на Notepad++

print(«Русский текст») или вместо » поставь `.Начни учить Python не с каких-то новостей и т. д., а найди нормальный гайд/курс. Я бы посоветовал тебе этот.Думаю за неделю ты сможешь не то что русский текст писать, а собственную, хоть и плохую, но программу).

Остальные ответы
Не уверен, но попробуй задать в переменную типо a = Привет, а в принт задай чтоб вывело a

Это от кодировки зависит. print(«привет») так-то. Если проблема с кодировкой, то переменные не помогут. Поставь нормальный IDE, например sublime text 3 или VS Code

Проверь кодировку сначала..
Установи UTF-8 без BOM

Заходи в Notrpad++ в Плагины -> NPPEXEC -> Console Output, в первом окошке ставь ANSI во втором UTF-8

Как заставить выводить русский текст 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)
  • Вопрос задан более трёх лет назад
  • 47520 просмотров

2 комментария

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

winordie

linux/windows? ошибка/кракозяблы в консоле? python2.7?
hardwellZero @hardwellZero Автор вопроса
Oscar Django: linux, 2.7, скрин — prntscr.com/646fuw
Решения вопроса 1

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)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *