Найти - Пользователи
Полная версия: кодировка
Начало » Python для новичков » кодировка
1 2
Cell
Уважаемые коллеги!
Простая программа в таком виде работает:

message= input(“введите текст: ”)
new_message=“”
vowels=“euyoai”
print()
for letter in message:
if letter.lower() not in vowels:
new_message+=letter
print (“строка: ”, new_message)
print(“итог: ”, new_message)

но в таком нет:

message= input(“введите текст: ”)
new_message=“”
vowels=“йуеэоаыяию”
print()
for letter in message:
if letter.lower() not in vowels:
new_message+=letter
print (“строка: ”, new_message)
print(“итог: ”, new_message)

Это как-то связано с кодировкой? Как это исправить?

(Python3 IDLE, Linux - lubuntu)
Singularity
Клац

Возможно да
Cell
Спасибо. Но как это исправить?
vanvanov
#!/usr/bin/python3
message= input("введите текст: ")
new_message=""
vowels="йуеэоаыяию"
print()
for letter in message:
	if letter.lower() not in vowels:
		new_message+=letter
print ("строка: ", message)
print("итог: ", new_message)
У меня все работает (и под Lin, и под Win). Посмотрите, что выводит sys.getdefaultencoding() и соответственно используйте decode() и encode().
Cell
Спасибо.
Как пользоваться? Просто ввести?
Тогда:
sys.getdefaultencoding()
Traceback (most recent call last):
File “<pyshell#2>”, line 1, in <module>
sys.getdefaultencoding()
NameError: name ‘sys’ is not defined
vanvanov
Сначала надо импортировать.
import sys
Т.к. у вас Python 3, то проблем вообще не должно быть. Используйте везде UTF-8.
С raw input могут быть заморочки, потому что в виндовой cmd кодировка cp866, но вы можете использовать различные GUI для ввода - easygui, tkinter, wxpython и пр. Там точно на входе будет нормальная кодировка. Будете работать с буфером обмена - почитайте мои темы, как я решил эту проблему.
Если у вас вместо кириллицы иероглифы, попробуйте сначала расшифровать кодировку. Например, line.decode('cp866'), line.decode('windows-1251'). На выходе можно попробовать line=line.encode('windows-1251').
ajib6ept
>>> import sys
>>> sys.getdefaultencoding()
Cell
А, понял, спасибо.
Выдал utf-8. Как быть далее?
vanvanov
Cell
А, понял, спасибо.Выдал utf-8. Как быть далее?
Я прочитал невнимательно, оказывается, у вас lubuntu. Там в принципе не должно быть проблем с кодировкой. Уточните, что именно у вас не работает. Проверьте кодировку вашего скрипта - она должна быть UTF-8. Загрузите python в консоли и в интерактивном режиме проверьте свой скрипт строка за строкой. Обратите внимание, что в вашем первоначальном скрипте опечатка:
print (“строка: , new_message)
вместо
print (“строка: , message)
Cell
Спасибо.
Построчно выает это:
>>> #_*_ coding: utf-8 -*-
message= input(“введите текст: ”)
введите текст:
>>> #_*_ coding: utf-8 -*-
message= input(“введите текст: ”)
new_message=“”
vowels=“йуеэоаыяию”
print()
for letter in message:
if letter.lower() not in vowels:
new_message+=letter
print (“строка: ”, new_message)

SyntaxError: multiple statements found while compiling a single statement

Но если в Netbeans, то все работает точно! Хотя еще не очень понятно, как запустить программу по двойному щелчку мыши)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB