Как вывести русский текст в 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?

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

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

__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)
  • Вопрос задан более трёх лет назад
  • 47940 просмотров

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)

Как вывести русский текст в консоль?

Author24 — интернет-сервис помощи студентам

Что-то я совсем запутался с кодировкой в python, версия стоит 2.7.4 пытаюсь выводить в консоль Windows Привет! на кириллице, а получаю «очень красивый текст». Объясните что к чему?

1 2 3 4
#-*- coding:cp1251 -*- s = "Привет!" print s input()

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вывести в консоль русский текст
Здравствуйте. Я понимаю что тема поднималась не один десяток раз, но все же. Установил.

Вывести русский текст в консоль
Возможно ли и как, выводить на Си(не С++, а именно Си, так как нам не льзя использовать элементы.

Вывести в консоль и псевдографику и русский текст вместе
подскажите пожалуйста как в консоль вывести и псевдографику и русский текст вместе.

Какой директивой в Turbo C вывести на консоль русский текст?
Например в Турбо паскале uses charset; //Не обязательно, только //если компилятор выдаёт ошибку .

Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Как сделать так, чтобы после некоторых манипуляций в файл выводился русский текст без сбитой.

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

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

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

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

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

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

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

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