Форум сайта python.su
JOHN_16
не понимаю зачем тогда файл 1 со старыми кодировками. если он , судя по тому что вы написали, не используется.
Офлайн
Zarich1
в таком случае сделайте его работу за него - додумайте задание до логического завершения. По символу из файла 3 ищется его код в файле 1 и меняется на символ с этим же кодом в файле 2, запись идет в файл 4. Вот так мне видится гипотетическая задумка задания.
Т.е.
В файле 1 есть запись
a = 0x01 b = 0x5A
z = 0x01 w = 0x5A
ab
Отредактировано JOHN_16 (Фев. 18, 2015 22:27:31)
Офлайн
Немного не то, что нужно. Дело-то в том, что файл, который я получу на выходе, все равно будет читаться по старой таблице кодировок (Аски например), а надо, чтобы читало по таблице windows-1251, например.
Офлайн
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)
Офлайн
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'))
Офлайн