Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 18, 2015 17:32:14

Zarich1
Зарегистрирован: 2015-02-16
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение шестнадцатеричного значения символов

JOHN_16
не понимаю зачем тогда файл 1 со старыми кодировками. если он , судя по тому что вы написали, не используется.

Да, так и есть, просто преподаватель сформулировал именно такое задание, сам он не разбирается хорошо в программировании (он преподает Информационные Технологии и у нас просто была лекция на тему кодировки символов - как задание он сказал закодить программу)

Офлайн

#2 Фев. 18, 2015 22:25:47

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Изменение шестнадцатеричного значения символов

Zarich1
в таком случае сделайте его работу за него - додумайте задание до логического завершения. По символу из файла 3 ищется его код в файле 1 и меняется на символ с этим же кодом в файле 2, запись идет в файл 4. Вот так мне видится гипотетическая задумка задания.
Т.е.
В файле 1 есть запись

a = 0x01 
b = 0x5A
в файле 2 запись
z = 0x01
w = 0x5A

в файле 3 есть символы
ab
Считываем символ из файла 3, получаем “a”, смотрим в файле 1 на его код, ему соответствует код 0x01. Ищем символ соответствующий коду в файле 2, получаем z, записываем этот символ в файл 4. Далее для следующего символа получим в результате w и т.д.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Фев. 18, 2015 22:27:31)

Офлайн

#3 Фев. 18, 2015 23:17:21

Zarich1
Зарегистрирован: 2015-02-16
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение шестнадцатеричного значения символов

Немного не то, что нужно. Дело-то в том, что файл, который я получу на выходе, все равно будет читаться по старой таблице кодировок (Аски например), а надо, чтобы читало по таблице windows-1251, например.

Офлайн

#4 Фев. 19, 2015 00:55:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Изменение шестнадцатеричного значения символов

Zarich1
просто преподаватель сформулировал именно такое задание
Всё правильно сформулировано.

Zarich1
Английские буквы не прочитались так, как кириллица.
Когда открыл в бинарном режиме и прочитал всё, каждый элемент прочитанного представляет из себя целое число - код.

>>> with open('/etc/issue', 'rb') as fin:
...   text = fin.read()[:6]
...   text, list(text)
... 
(b'Fedora', [70, 101, 100, 111, 114, 97])
>>>

Там нет букв, только числа.



Отредактировано py.user.next (Фев. 19, 2015 00:58:10)

Офлайн

#5 Фев. 19, 2015 01:19:46

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Изменение шестнадцатеричного значения символов

Zarich1
пусть исходный файл в кодировке виндовой cp1251. Текстовой редактор ( пусть блокнот) открывая файл руководствуется системной кодировкой что бы преобразовать байты в символы. Вы видите корректный текст на кириллице потому что совпали кодировки текста и программы. Если перевести этот текст в другую кодировку, то блокнот откроет ее и покажет кракозябры, потмоу что не совпали кодировки текста и программы, НО при этом сам текст кодирован абсолютно корректно.
Поэтому вот это

Zarich1
файл, который я получу на выходе, все равно будет читаться по старой таблице кодировок (Аски например), а надо, чтобы читало по таблице windows-1251
относится не к Питону и даже не файлам и их содержимому, а к программе которая будет это читать.
ВОт ниже код:
>>> su=u'Привет'
>>> with open('cp1251.txt', 'w') as f: f.write(s.encode('cp1251'))
>>> with open('koi8r.txt', 'w') as f: f.write(su.encode('koi8-r'))
Блокнот в Windows XP покажет корреткно первый и не корректно второй файлы. Notepad++ тоже самое, НО если ему задать отображение второго файла в кодировке koi8-r, то он отобразит его корректно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version