Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задачка на питоне

Иван Рудковски Ученик (95), на голосовании 1 месяц назад
После недавнего сбоя в операционной системе от компании «Oursoft» у Гвидо сбилась кодировка на компьютере. Теперь все буквы русского алфавита отображаются в некорректном виде:

[u-<номер символа в таблице Unicode>]
Гвидо еще не научился читать символы в таком формате, поэтому просит вас написать программу, которая будет "расшифровывать" для него все тексты на компьютере.

На вход программе подается строка текста. Расшифруйте текст, заменив все конструкции [u-<номер символа в таблице Unicode>] на соответствующие буквы русского алфавита, и выведите его.

Формат входных данных
На вход программе подается строка текста, в которой могут быть зашифрованы символы русского алфавита.

Формат выходных данных
Программа должна вывести строку текста, расшифровав символы русского алфавита.

Примечание. Будем считать, что буквы Ё нет в русском алфавите.
Голосование за лучший ответ
ivan866_z Просветленный (20243) 2 месяца назад
Если скажет сделать то же самое БЕЗ `import re`, шли к монаху сразу
 import re 
from copy import deepcopy

INPUT:str = 'Текст: [u-<1056>]-[u-<1091>]-[u-<1076>]-[u-<1082>]-[u-<1086>]-[u-<1074>]-[u-<1089>]-[u-<1082>]-[u-<1080>]'

codes:list = re.findall('\[u\-<(\d+)>\]', INPUT, re.MULTILINE | re.DOTALL)
OUTPUT = deepcopy(INPUT)
for c in codes:
OUTPUT = re.sub('\[u\-<{:s}>\]'.format(c), chr(int(c)), OUTPUT)
print(OUTPUT)
ivan866_zПросветленный (20243) 2 месяца назад
Прим.: скрипт заменяет вообще все символы юникода, если они записаны в таком формате
вероятно, в условии есть подвох - заменять только именно буквы русского алфавита
нужно добавить проверку на соответствие диапазону
Сыч Профи (809) 1 неделю назад
import re

# Функция для замены конструкций [u-<номер>] на соответствующие символы
def decode_text(text):
# Функция замены для каждого совпадения
def replace_unicode(match):
unicode_number = int( match.group (1)) # Получаем номер символа
return chr(unicode_number) # Возвращаем символ по коду

# Используем регулярное выражение для поиска конструкций [u-<номер>]
decoded_text = re.sub(r'\[u-(\d+)\]', replace_unicode, text)
return decoded_text

# Ввод текста
input_text = input()

# Расшифровка текста
output_text = decode_text(input_text)

# Вывод результата
print(output_text)
Похожие вопросы