Найти - Пользователи
Полная версия: проблема с вводом и выводом русских символов
Начало » Python для новичков » проблема с вводом и выводом русских символов
1 2
eiler13
В коротком примере попытка решить задачу: ввести русское слово и удалить из него все буквы ‘ы’ и ‘и’.

#!/usr/bin/python
# -*- coding: utf-8 -*-
string=raw_input("Слово? ")
print string.translate(None,"ыи")
$./test-ru.py 
Слово? ыыыаааиии
���
локаль в консоле utf8, кодировка текста скрипта тоже в utf8.

Пробую применить decode и encode - не помогает , например :
#!/usr/bin/python
# -*- coding: utf-8 -*-
string=raw_input("Слово? ")
print string.translate(None,"ыи").encode('utf8')
$ ./test-ru.py 
Слово? ыыыаааииии
Traceback (most recent call last):
  File "./test-ru.py", line 4, in <module>
    print string.translate(None,"ыи").encode('utf8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 0: ordinal not in range(128)

Помогите разобраться с вводом, обработкой и выводом слов с русскими символами.
xorox
Попробуй почитать тут, может поможет.
Budulianin
eiler13
Помогите разобраться с вводом, обработкой и выводом слов с русскими символами.

string - зарезервированное слово.
В программе нужно работать ТОЛЬКО с Unicode.

lst_char = u'ыи'
dict_chars = {ord(c): None for c in lst_char}
s = raw_input().decode('utf-8')
print(s.translate(dict_chars))

Выведи в своём коде len(string), потом посчитай символы сам, потом удивись.
Для понимания, почему так, смотреть видео
А так же читать, что такое Unicode



eiler13
Budulianin
А метода удаления символов для строк не существует? мне ничего не удалось найти для этого, кроме translate.
Budulianin
eiler13
А метода удаления символов для строк не существует? мне ничего не удалось найти для этого, кроме translate.

Все методы(в списке атрибутов) строк - print(dir(''))

Прочитать описание метода - help(''.translate)

А translate не удаляет символы ?
eiler13
Budulianin
более точно заменяет :-)
P.S. я просто уточняю, может что-то пропустил
Budulianin
eiler13
P.S. я просто уточняю, может что-то пропустил

Наверно ты упустил, то что, в Python строка - неизменяемый тип данных
eiler13
Budulianin

нет это я хорошо усвоил :-)


P.S. теоретически может существовать метод

новая_строка=строка.delete('символы_для_удаления')

strip же удаляет пробелы
Budulianin
eiler13
новая_строка=строка.delete('символы_для_удаления')
это делает translate

Ещё это делает вышеупомянутый strip(только на концах)

Budulianin
P.S. теоретически может существовать метод

Не нужно гадать, нужно читать доку.
pyr0
eiler13
Помогите разобраться с вводом, обработкой и выводом слов с русскими символами.
Не ради холивара, но все же предложу использовать Python 3. Он прекрасно работает с кириллицей, без всяких decode и encode
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