Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 1, 2015 13:00:58

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

Проверка коректности кодировки с слове

Вопрос в следующем посде того как файл спарсен и с ним начинаеться работа, возникает следующая ошибка:
'charmap' codec can't encode character ‘\xfc’
файл читал в UTF

open(pathToFile, 'r', encoding='utf-8')
сама суть проблемы в том что ошибка появлясеться только когда делаю print()
если просто пройти список, то ни каких ошибок выявлено не будет.
Помогите выявить ошибку в слове без помощи print()

Офлайн

#2 Июнь 1, 2015 13:07:38

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

Проверка коректности кодировки с слове

кстати падает скрипт вот на таком слове “schreitmüller”

Офлайн

#3 Июнь 1, 2015 13:30:25

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

Проверка коректности кодировки с слове

>>> 'schreitmüller'.encode('cp1251')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.3/encodings/cp1251.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character '\xfc' in position 8: character maps to <undefined>
>>>

Виндовая консоль выводит в cp1251.



Отредактировано py.user.next (Июнь 1, 2015 13:31:18)

Офлайн

#4 Июнь 1, 2015 13:52:00

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

Проверка коректности кодировки с слове

py.user.next
я смоделирую ситуацию, есть список слов, я их прохожу циклом и делаю с ними какие нибудь преоброзвания, и во время этого валиться цикл, из за ошибки кодировки.
я хотел бы заранее отфильтровать этот список, что бы в нем не было таких слов, но это ошибка вываливаеться только при print(), а хотел бы не засорять вывод, а сделать как то более красиво

делаю так
to_return = []
for word in words:
    try:
         print(word )
         to_return.append(word )
    except Exception as e:
         pass

Отредактировано 2ur1st (Июнь 1, 2015 13:53:00)

Офлайн

#5 Июнь 1, 2015 14:24:11

codersed
Зарегистрирован: 2015-05-13
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

Попробуйте так прочитать:

with open("filename") as file:
    content = file.readlines()

Офлайн

#6 Июнь 1, 2015 14:50:23

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

Проверка коректности кодировки с слове

codersed
Попробуйте так прочитать:
дело не в чтение файла, а в том как обработать эту ошибку

Офлайн

#7 Июнь 1, 2015 14:55:35

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

2ur1st
а сделать как то более красиво
try:
...
... encode(sys.stdout.encoding)
Недостаточно красиво?

Офлайн

#8 Июнь 1, 2015 15:08:16

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

Проверка коректности кодировки с слове

Shaman
хочу донести до вас, что проблема не в выводе этого слова, а в том что я хочу это слово извлечь из списка, что бы последющая обработка, на падала на ошибка кодироки.
если вывести этого слова в UTF то получиться,
b'schreitm\xc3\xbcller'

т.е все валиться из за одного символа

Отредактировано 2ur1st (Июнь 1, 2015 15:08:49)

Офлайн

#9 Июнь 1, 2015 15:11:55

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

2ur1st
хочу донести до вас, что проблема не в выводе этого слова
А я гдо-то вывожу слово?!

Офлайн

#10 Июнь 1, 2015 15:17:43

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

Проверка коректности кодировки с слове

Shaman
нет, но при таком преобразование, косяк не вспывет, а просто будет в юникоде, и в том виде в котором будет это строка меня не устраивает, точнее я просто не знаю что мне дельше с ней делать, как только потребуеться производить расчеты со строками?
за любой совет буду благодарен

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version