Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 3, 2012 15:02:31

ankane
Зарегистрирован: 2012-11-16
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с кодировками.

Действующие лица

Postgresql - utf-8
freebsd - utf-8

Пишу скрипт,который должен обрабатывать строки с ошибками при импорте базы.

def search_for_err():
        global error_list
        err_key='ОШИБКА'
        print os.getcwd()
        f=open('error.log','r')
        for line in f:
                #f.readline()
                if err_key in line:
                        error_list.append(line)
        f.close()
        str_from_list=str(error_list)
        print (u'%s') %str_from_list

Ошибку в строках находит. Т.к. изначально все в читаемом виде. После добавления строки в лист, печатаю лист/преобразую лист в строку :

psql:data/create_widget_info_gallery.sql:14: \xd0\x9e\xd0\xa8\xd0\x98\xd0\x91\xd0\x9a\xd0\x90:  INSERT \xd0\xb8\xd0\xbb\xd0\xb8 UPDATE \xd0\xb2 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd0\xb5 "widget_info_gallery" \xd0\xbd\xd0\xb0\xd1\x80\xd1\x83\xd1\x88\xd0\xb0\xd0\xb5\xd1\x82 \xd0\xbe\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb2\xd0\xbd\xd0\xb5\xd1\x88\xd0\xbd\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xba\xd0\xbb\xd1\x8e\xd1\x87\xd0\xb0 "fk_widget_info_gallery_internal_resource_id" \n']

На выходе получаю вот это.

Каким образом преобразовать в читаемый текст?
P.s. конфиги базы и сервера изменять не выйдет.

Спасибо.

Офлайн

#2 Дек. 3, 2012 16:49:57

ankane
Зарегистрирован: 2012-11-16
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с кодировками.

Переделал немного.

def search_for_err():
        global error_list
        err_key='ОШИБКА'
        print os.getcwd()
        f=open('error.log','r')
        for line in f:
                if err_key in line:
                        with open('search_result','a') as f:
                                f.writelines(line)
        f.close()

В search_result все корректно отображается. Этого мне в принципе достаточно. Но все-же еще интересно, как быть в случае со списком.?

Офлайн

#3 Дек. 4, 2012 06:41:59

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

Помогите с кодировками.

1) зачем глобальная переменная нужна ? подай список как аргумент
2) для склеивания списка строк используй str.join()
3) для раскодирования из байтов в юникод используй str.decode()
4) выводи просто через print s



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version