Форум сайта python.su
доброго всем времени суток.
как понятно из заголовка, снова проблема с кодировкой.
перед этим прочитал весь поиск на эту тему, все попробовал, решения так и нашел.
конечно же, я в python новичок, но уже появилась некоторая задача.
имеется такая строчка:
NAME:‡ЂЋ “¬®бЄў >23ав
.¬®в®” >24ЋЇ« в § /¬ Ї® „Ё«ҐабЄ®¬г ¤®Ј®
ў®>26аг Ї® бз>27Ґвг >30
если я правильно понимаю, то представлена она в OEM 866, задача отобразить ее в win1251.
если быть точнее, то задача конвертировать несколько сотен файлов в читабельный вид.
пожалуйста, подскажите, как это правильнее сделать. буду очень рад полезным ссылкам на эту тему (гуглом пользовался, толку мало)
работаю под виндой, python 3.2
заранее благодарю!
Офлайн
'xxx'.decode('cp866').encode('cp1251')
это для py2,6, для 3,2 что-то подобное
Офлайн
а это фокус (для запутывания)
# coding: utf8
s = """NAME:‡ЂЋ "¬®бЄў >23ав
.¬®в®" >24ЋЇ« в § /¬ Ї® „Ё«ҐабЄ®¬г ¤®Ј®
ў®>26аг Ї® бз>27Ґвг >30"""
print s.decode('utf8').encode('cp1251').decode('cp866')
NAME:ЗАО "москв >23рт
.мото" >24Опл т з /м по Дилерскому дого
во>26ру по сч>27ету >30
Офлайн
попытался сделать так, как Вы посоветовали…
ругается на следующее:
Traceback (most recent call last):
File "C:/Python32/1", line 5, in <module>
print(s.decode('utf8').encode('cp1251').decode('cp866'))
AttributeError: 'str' object has no attribute 'decode'
# coding: utf8
Офлайн
Я привел пример для py2.x …, пришлось установить питон 3,2
вот 2 способа, конвертит из файла “1” в “2”
open('2','w',encoding='cp1251').write(open('1','r',encoding='cp866').read())
open('2','bw').write(open('1','br').read().decode('cp866').encode('cp1251'))
Офлайн
>>> s = """NAME:‡ЂЋ "¬®бЄў >23ав
... ... .¬®в®" >24ЋЇ« в § /¬ Ї® „Ё«ҐабЄ®¬г ¤®Ј®
... ... ў®>26аг Ї® бз>27Ґвг >30"""
>>> s
'NAME:‡ЂЋ "¬®бЄў >23ав\n... .¬®в®" >24ЋЇ« в § /¬ Ї® „Ё«ҐабЄ®¬г ¤®Ј®\n... ў®>26аг Ї® бз>27Ґвг >30'
>>> s.encode('cp1251')
b'NAME:\x87\x80\x8e "\xac\xae\xe1\xaa\xa2 >23\xe0\xe2\n... .\xac\xae\xe2\xae" >24\x8e\xaf\xab \xe2 \xa7 /\xac \xaf\xae \x84\xa8\xab\xa5\xe0\xe1\xaa\xae\xac\xe3 \xa4\xae\xa3\xae\n... \xa2\xae>26\xe0\xe3 \xaf\xae \xe1\xe7>27\xa5\xe2\xe3 >30'
>>> s.encode('cp1251').decode('cp866')
'NAME:ЗАО "москв >23рт\n... .мото" >24Опл т з /м по Дилерскому дого\n... во>26ру по сч>27ету >30'
>>>
messsirу приложения, в котором смотришь текст, есть отображение в кодировке
если быть точнее, то задача конвертировать несколько сотен файлов в читабельный вид.
messsirв третьем питоне кодировка по умолчанию utf-8# coding: utf8
messsirкачай python 3.2.1
работаю под виндой, python 3.2
o74123698159631) сделай import thisopen('2','w',encoding='cp1251').write(open('1','r',encoding='cp866').read())
Отредактировано (Июль 23, 2011 06:50:37)
Офлайн
o7412369815963Спасибо, теперь все понятно, ясно что делал не так.
Я привел пример для py2.x …, пришлось установить питон 3,2
вот 2 способа, конвертит из файла “1” в “2”
в питоне 3,2 байтовая строка указывается с буквой б: b“xxx” (тут есть decode ), но нужно что-б сам исходник был в той кодировке,
либо можно использовать так “xxx”, но сохранить файл в cp866 и написать в начале # coding: cp866
py.user.nextда, надо было уточнить. я имел ввиду, что нужно открывать в виндовском блокноте.
у приложения, в котором смотришь текст, есть отображение в кодировке
так что “читабельный вид” - понятие относительное
py.user.nextспасибо, не узнал. установил.
качай python 3.2.1
там исправлен баг input'а
http://bugs.python.org/issue12477
py.user.nextблагодарю за ссылки и помощь :)
1) сделай import this
2) этот код не закрывает файлы
3) http://docs.python.org/py3k/reference/c … -statement
второ питон (http://docs.python.org/reference/compou … -statement)
Офлайн
py.user.nextЭтот код закрывает файлы! т.к. не происходит привязывание к пространству имен и объект разрушается сразу после выполнения. =P
1) сделай import this
2) этот код не закрывает файлы
3) http://docs.python.org/py3k/reference/compound_stmts.html#the-with-statement
второ питон (http://docs.python.org/reference/compound_stmts.html#the-with-statement)
Офлайн
o7412369815963уже читаю :)
Ты привел полезные ссылки, тебе стоит их почитать.
Офлайн
o7412369815963я уточню ещё точнее
Ты привел полезные ссылки, тебе стоит их почитать.
Objects are never explicitly destroyed; however, when they become unreachable they may be garbage-collected. An implementation is allowed to postpone garbage collection or omit it altogether — it is a matter of implementation quality how garbage collection is implemented, as long as no objects are collected that are still reachable.
Some objects contain references to “external” resources such as open files or windows. It is understood that these resources are freed when the object is garbage-collected, but since garbage collection is not guaranteed to happen, such objects also provide an explicit way to release the external resource, usually a close() method. Programs are strongly recommended to explicitly close such objects. The ‘try…finally‘ statement and the ‘with‘ statement provide convenient ways to do this.
o7412369815963на чём основано данное утверждение ?
Этот код закрывает файлы! т.к. не происходит привязывание к пространству имен
Отредактировано (Июль 24, 2011 06:14:54)
Офлайн