Форум сайта python.su
0
Ммм. А в чем же может быть проблема? ОС?
Офлайн
0
Под linux тоже никак.
Прикреплённый файлы:
scr.jpg (146,2 KБ)
Офлайн
3
при чтении файла с помощью readline() добавляются дополнительные бэкслеш, поэтому s выглядит как
>>> s '\\\\u0410\\\\u043b\\\\u0435\\\\u043a\\\\u0441\\\\u0430\\\\u043d\\\\u0434\\\\u0440'
f = open('example.txt', 'r') s = f.readline() s = s.replace('\\\\', '\\') print s.decode('unicode-escape')
Офлайн
0
Под линукс помогло, правда выдал не все символы, некоторые заменил ромбами.
Под виндой ошибка:
>>> print s.decode('unicode-escape')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 6-18: character maps to <undefined>Офлайн
3
пробую под виндой, вроде работает, я так понимаю, там еще есть дополнительный код и задача не просто прочитать и декодировать?
import codecs out = codecs.open('example.txt', 'r', 'unicode-escape') s = out.read() print s.decode('unicode-escape')
Отредактировано TroSer (Дек. 9, 2013 12:17:45)
Офлайн
0
TroSer
Задача одна: прочитать один файл и записать в другой файл. Без какой-либо доп. обработки. Просто файл реально большой.
Если кто-нибудь знает готовые утилиты, то сгодятся и они. Вот здесь: http://www.mixesoft.com/unicode_escaped_sequence_to_string_literals_converter.html есть декодер, который справляется с задачей. Но свой файл я туда загрузить не смогу.
Да и вообще, хотелось бы понять, в чем проблема.
Даже когда беру один символ, декодировать не получается:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-8: character maps to <undefined>
>>> s='\u0410'
>>> print s.decode('unicode-escape')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0410' in position 0: character maps to <undefined>
Отредактировано maxfox (Дек. 9, 2013 13:34:27)
Офлайн
0
Я так понимаю, что вот такое поведение не нормально:
>>> import sys
>>> print sys.getdefaultencoding()
ascii
>>> s=u'\u0410'
>>> print s
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0410' in position 0: character maps to <undefined>
>>>
Офлайн
47
а
sys.stdin.encoding sys.stdout.encoding
Офлайн
0
bismigalis
stdin cp1252
stdout cp437
Я так понимаю, это отображение системных потоков, с которыми работает интерпретатор? Т.е. все дело в окружении?
Отредактировано maxfox (Дек. 9, 2013 18:11:45)
Офлайн
47
cp437 не может содержать русские буквы
maxfoxэто в виндовом cmd?
stdin cp1252
stdout cp437
Офлайн