Проблемы с чтением данных MARC с использованием MARCReader() и pymarc

Поэтому я пытаюсь научить себя Python и Pymarc для школьного проекта, над которым я работаю. У меня есть пример файла marc, и я пытаюсь прочитать его, используя этот простой код:

from pymarc import *

reader = MARCReader(open('dump.mrc', 'rb'), to_unicode=True)

for record in reader:
    print(record)

Цикл for должен просто распечатать каждую запись, чтобы убедиться, что я получаю правильные данные. Единственное, что я получаю эту ошибку:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)

Я посмотрел онлайн, но не смог найти ответ на свою проблему. Что означает эта ошибка и как я могу исправить ее? Заранее спасибо.

1 ответ

Решение

Вы можете настроить среду Python для поддержки UTF-8 и получить запись в виде словаря.

Пытаться:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

reload(sys)
sys.setdefaultencoding('utf-8')

from pymarc import *

reader = MARCReader(open('dump.mrc', 'rb'), to_unicode=True, force_utf8=True)
for record in reader:
    print record.as_dict() 

Замечания:

  1. Если вы по-прежнему получаете исключение Unicode, вы можете установить to_unicode=False и пропустить force_utf8=True.

  2. Также, пожалуйста, проверьте, закодирован ли ваш файл dump.mrc в UTF-8 или нет. Попробуйте: $ chardet dump.mrc

Другие вопросы по тегам